如何求出1-n以内勾股数之和
比如1-103+4+5 +6+8+10=36 请问:若 n=7 时,包含“6”吗? 楼主的例子是包含n的:lol
1~10:3+4+5+6+8+10=36 我问的意思是:不完整的“勾股数”组合算吗?比如(6,8,10)中能选前面的一二个。 要完整的
比如1-15
3 4 5
5 12 13
6 8 10
9 12 15
全加起来 勾股数 形如:{a^2+b^2 ,a^2-b^2 ,2ab}
所以问题的实质就是,求所有满足a^2+b^2 <= n 的非平凡的正整数解。 关于 半径为根号n的圆内 的整点个数,以及所有的整数点, 我记得在Mathematica里面是有现成的函数的 非平凡的是怎么理解呢 #6,试一下编程:#include <stdio.h>
#include <math.h>
typedef unsigned int DWORD;
DWORD Test(DWORD n)
{
DWORD t,sum=0;
DWORD a,b;
for(b=1;b<(n>>1);b++)
for(a=b+1;a<=n;a++)
{
t=(DWORD)pow((double)a,2.0);
if((t+(DWORD)pow((double)b,2.0))<=n)
sum+=(t+a*b)<<1;
}
return sum;
}
int main()
{
printf("%u %u\n",10,Test(10));
return 0;
} 9# G-Spider
我也写了一个:#include <stdio.h>
int Test(int n)
{
int t,sum=0;
int a,b;
for(b=1;b*b<n/2.0;b++)
for(a=b+1;a*a<=n;a++)
{t=a*a+b*b;
if(t<=n)
printf("%d\t%d\t%d\t\n",a*a-b*b,2*a*b,t), sum+=2*a*(a+b);else break;
}
return sum;
}
int main(int c ,char **v)
{ if (c==2) {printf("total:%s %d\n",v,Test(atoi(v))); }
return 0;
}