检查至少 2 个数字是完全正方形 - C 程序

Check at least 2 numbers are perfect squares - c program

输出:

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

我只想打印那些至少有 2 个完全正方形的数组。 在上面的输出中,“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);
            }
        }
    }
  }
}

这是一个非常简单的任务,您只需要检查每个 {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);
                    }
                }
            }
        }
    }
}