#include <stdio.h>
int func(int n)
{int s,k
for(k=2,s=1k<=n/2k++)
if(n%k==0) s=s+k
return s
}
main()
{
int m,i,p,q
for(m=2m<=3000m++)
{
p=func(m)
q=func(p)
if(q==m&&m<=p) printf("%d<--->%d\n",m,p)
}
}
2.main()
{int i,n,a=0,s=0,b=0
static int e[40],g[40]
for(n=2n<=41n++)
{for(i=1i<ni++)
if(n%i==0) s=s+i
if(s==n) {e[a]=na++} else
if(s>n) {g[b]=nb++} s=0//修改在这里!你的S每次记录和后需要恢复成0,不然就会出错!
}
printf("E: ")
for(i=0i<ai++)
printf("%2d ",e[i])
printf("\n")
printf("G: ")
for(i=0i<bi++)
printf("%2d ",g[i])
printf("\n")
}
3.要是我会先写个模板!这么差的效率!呵呵
不巧在baidu上找得!你看看把!
http://test.iask.sina.com.cn/b/4557209.html
外加一句!俺很辛苦!
#include<stdio.h>#include<time.h>
int sum(int n)
{int s=0,i
for(i=1i<=n/2i++)
if(n%i==0)s+=i
return s-n
}
int main ( )
{int i,a[1001]
printf("亏数:\n")
for(i=1i<1001i++)
{a[i]=sum(i)
if(a[i]<0)printf("%5d",i)
}
printf("\n盈数:\n")
for(i=1i<1001i++)
if(a[i]>0)printf("%5d",i)
printf("\n完全数:\n")
for(i=1i<1001i++)
if(!a[i])printf("%5d",i)
printf("\n花时:%.3f秒\n",clock()/1000.0)
return 0
}