已知一个正整数n,编写一个程序,找出所有满足x*x + y*y = n的正整数对x和y.
我们知道n的平方根乘以n的平方根等于n,所以x,y的最大值为n的平方根,所以我们通过穷举法,就可求出x,y的值,编写代码如下:
- #include <stdio.h>
-
#include <math.h>
-
-
void getXY(int n)
-
{
-
int x,y;
-
for(x=1; x<sqrt(n); x++)
-
for(y=x; y<sqrt(n); y++)
-
if(x*x+y*y == n)
-
printf("%d*%d + %d*%d = %d\n",x,x,y,y,n);
-
}
-
-
-
int main(int argc, char *argv[])
-
{
-
int n;
-
printf("please input a integer\n");
-
scanf("%d",&n);
-
getXY(n);
-
-
return 0;
-
}
程序执行结果如下:
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ gcc 6.2.c -lm
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ ./a.out
please input a integer
100
6*6 + 8*8 = 100
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ ./a.out
please input a integer
200
2*2 + 14*14 = 200
10*10 + 10*10 = 200
阅读(2619) | 评论(0) | 转发(0) |