用C程序求100以内勾股数。

用C程序求100以内勾股数。,第1张

所谓勾股数,就是对于a,b,c,存在a*a+b*b=c*c。

为去除重复,可令a<b,并对100以内的a,b遍历。如果存在满足的等式关系的c,则输出。

代码如下:

int main()

{

    int a,b,c

    for(a = 1 a <100 a++)

        for(b = ab<100 b++)

        {

            int d = a*a+b*b

            if(d > 10000) break

            for(c = b+1 c<100 c++)

            {

                int e

                e = c*c

                if(e == d)

                    printf("%d,%d,%d\n",a,b,c)

                if(e>=d) break

            }

        }

}

from __future__ import print_function

n=0

for i in range(1,50):

    for j in range(i+1,50):

        for k in range(j+1,50):

            if i*i+j*j==k*k:

                print("%2d,%2d,%2d    "%(i,j,k),end='')

                

                n+=1

                if n==6:

                    print()

                    n=0

不得不说,楼上两位的算法有疏漏!

请看看:k倍的(3,4,5)是否“都能”表示成(m*m-n*n,2*m*n,m*m+n*n)的形式?

本人的程序如下:

#include <stdio.h>

#include <math.h>

#define MAX 20000

int gcd(int a,int b)

{

int t

if(a>b) t=a,a=b,b=t

while(a)

{

t=a

a=b%a

b=t

}

return b

}

int main()

{

int i,j,n,total=0

n=(int)sqrt(MAX)

for (i=1i<=n++i)

{

for (j=1j<i++j)

{

if(((i+j)&1)&&gcd(i,j)==1)

total+=MAX/(i*i+j*j)

}

}

printf("Total: %d\n",total)

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11794820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存