勾股数
一、问题描述:

二、设计思路:

穷举法会超时,用前两个变量来表示前三个值
三、程序流程图:

四、代码实现:
#include<stdio.h> #include<math.h> int main() { int a, b, c, count=0; printf("100以内的勾股数有:\n"); printf(" a b c a b c a b c a b c\n"); /*求100以内勾股数*/ for(a=1; a<=100; a++) for(b=a+1; b<=100; b++) { c=(int)sqrt(a*a+b*b); /*求c值*/ if(c*c==a*a+b*b && a+b>c && a+c>b && b+c>a && c<=100) /*判断c的平方是否等于a2+b2*/ { printf("%4d %4d %4d ", a, b, c); count++; if(count%4==0) /*每输出4组解就换行*/ printf("\n"); } } printf("\n"); return 0; }

用三个循环超时了,我说怎么只输出了一半,注意此时if语句判断的满足条件,都要考虑到

浙公网安备 33010602011771号