勾股数

一、问题描述:

 

 

二、设计思路:

 穷举法会超时,用前两个变量来表示前三个值

 

三、程序流程图:

 

 

四、代码实现:

#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语句判断的满足条件,都要考虑到

posted @ 2023-05-13 23:53  软件拓荒人  阅读(62)  评论(0)    收藏  举报