搜索
查看: 466|回复: 0
打印 上一主题 下一主题

找出勾股数

[复制链接]
跳转到指定楼层
楼主
发表于 2016-4-7 12:26:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
完整:输入a,找出小于等于a的所有勾股正整数,还要求两个直角边长度互质。(比如说输出3 4 5就没有6 8 10了)
Gcc通过
[mw_shl_code=c,true]
#include <stdio.h>
#include <math.h>
int gcd(int a,int b)
{
        return b==0?a:gcd(b,a%b);
}
int huzhi(int a,int b)
{
        if(gcd(a,b)==1)return 1;
        return 0;
}
int main()
{
        int a;
        printf("你要输出多少以内的整数?\n");
        scanf("%d",&a);
        int t=0,i,j,k;
        for(i=1;i<=a;i++)
        {
                for(j=i;j<=a;j++)
                {
                        k=(int)sqrt((double)i*i+j*j);
                        if(i*i+j*j==k*k&&huzhi(i,j)&&k<=a)
                        {
                                ++t;
                                printf("Case #%d:%d %d %d\n",t,i,j,k);
                        }
                }
        }
        return 0;
}
[/mw_shl_code]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表