检查至少2个数字是否为完美平方-C程序

时间:2018-08-04 21:00:03

标签: c loops recursion conditional

输出:

1 2 9
1 3 8
1 4 7
1 5 6
2 3 7
2 4 6
3 4 5 

预期:

1 2 9
1 4 7

我只想打印其中至少有两个完美正方形的那些数组。 在上面的输出中,“ 1 2 9” 1和9和1和4都是完美的正方形。其余结果将跳过或不打印。

下面是我当前的代码:

#include <stdio.h>
#include <math.h>
int main(void) {
int num;
scanf("%d",&num);
if(num<200)
for(int a = 1; a < num; a++) {
    for(int b = a + 1; b < num; b++) {
        for(int c = b + 1; c < num; c++) {
            if(a + b + c == num) {
                printf("%d %d %d\n", a, b, c);
            }
        }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

这是一个非常简单的任务,您只需要检查每个{a,b,c}中是否至少有两个正方形即可。也许这不是检查数字是否为正方形的最佳方法,但是您可以编写自己的函数来检查它。

#include <stdio.h>
#include <math.h>

int is_square(int x)
{
    for(int i=1;i<=x/i;i++)
    {
        if(i*i==x)
        {
            return 1;
        }
    }

    return 0;
}

int main(void)
{
    int num;
    scanf("%d",&num);
    if(num<200)
    {
        for(int a = 1; a < num; a++)
        {
            for(int b = a + 1; b < num; b++)
            {
                for(int c = b + 1; c < num; c++)
                {
                    if(a + b + c == num && is_square(a) + is_square(b) + is_square(c) >= 2)
                    {
                        printf("%d %d %d\n", a, b, c);
                    }
                }
            }
        }
    }
}