一个毕达哥拉斯三元组是一个包含三个自然数的集合,a<b<c,满足条件:
a2 + b2 = c2
例如:32 + 42 = 9 + 16 = 25 = 52.
已知存在并且只存在一个毕达哥拉斯三元组满足条件a + b + c = 1000。
找出该三元组中abc的乘积。
——————————————————————————————————————————
用的解决方法再暴力不过了,一路循环、判断。。。
代码如下:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4 5 6 int main (void) 7 { 8 int a,b,c; 9 10 for(c=3;c<=997;c++) 11 { 12 for(b=2;b<=996;b++) 13 { 14 if(c>b) 15 { 16 for(a=1;a<=995;a++) 17 { 18 if(a<b&&a<c&&b<c) 19 { 20 if((a*a+b*b==c*c)&&(a+b+c==1000)) 21 { 22 printf("%d*%d*%d=%d\n",a,b,c,a*b*c); 23 break; 24 } 25 } 26 } 27 } 28 } 29 } 30 31 return 0; 32 }
输出结果:200*375*425=31875000;