c语言编程题改错

Python012

c语言编程题改错,第1张

1.设计本身就有问题,把两个数都分解因式后在计算比较,不知道你考虑过这个程序的效率没有!

#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

}