int sumOfFactors(int numA)
{
int i=1
int numB
for(numB = 0 i<=numA/2 i++)
{
if(!(numA%i))
numB+= i
}
return numB
}
void main()
{
int numA,numB,numN
printf("显示5000以内的亲密数:\n")
for(numA = 1 numA<=5000 numA++)
{
//计算numA的各个因子,同样循环
numB = sumOfFactors(numA)
//计算numB的各个因子,同样循环
numN = sumOfFactors(numB)
if(numN==numA&&numA<numB)
printf("%d--%d ",numA,numB)
}
}
网页链接
#include<stdio.h>int main()
{
int a,b,n
int facsum(int n,int *a,int *b)
printf("There are following friendly--numbers pair smaller than 500:\n")
for(a=1a<500a++) /*穷举500以内的全部整数*/
{
n=facsum(n,&a,&b)
if(n==a&&a<=b)
printf("%4dand%d\n",a,b)/*若n=a,则a和b是一对亲密数,输出*/
}
}
int facsum(int n,int *a,int *b)
{
int i
for(*b=0,i=1i<=*a/2i++) /*计算数a的各因子,各因子之和存放于b*/
if(!(*a%i))
*b+=i/*计算b的各因子,各因子之和存于n*/
for(n=0,i=1i<=*b/2i++)
if(!(*b%i))
n+=i
return n
}
呵呵,楼主,你还是多看看函数的用法吧,先理清逻辑。
while(i<a){
i=i+1
这样当i=a-1时,会进入循环,然后i加1,变成了a,并参与了运算,因此会得出错误结果。
将以上代码改为:(注意,第二个也要改)
while(++i<a){
//i=i+1
应该就正确了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)