霍城县一周天气预报:c语言编程题改错

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/27 09:42:37
若整数A的全部约数(包括1,不包括A本身)之和等于B;且整数B的全部约数(包括1,不包括B本身)之和等于A,则A、B为亲密数。编程,按A----B的形式输出3000以内亲密数A、B(A〈=B)
main()
{int a,b=0,i,c=0;
printf("A----B\n");
for(a=1;a<=3000;a++)
{for(i=1;i<a;i++)
if(a%i==0) b=b+i;
for(i=1;i<b;i++)
if(b%i==0) c=c+i;
if(c==a) printf("%2d----%2d\n",a,b);
}
}
一个数如果恰好等于它的各约数(该数本身除外)之和(如:6=3+2+1),则称其为“完数”;若约数之和大于该数,则称其为“盈数”。求出2到41之间所有“完数”和“盈数”,并以如下形式输出:
E: e1 e2 e3 ......(ei为完数)
G: g1 g2 g3 ......(gi为盈数)
main()
{int i,n,a=0,s=0,b=0;
static int e[40],g[40];
for(n=2;n<=41;n++)
{for(i=1;i<n;i++)
if(n%i==0) s=s+i;
if(s==n) {e[a]=n;a++;} else;
if(s>n) {g[b]=n;b++;}
}
printf("E: ");
for(i=0;i<a;i++)
printf("%2d ",e[i]);
printf("\n");
printf("G: ");
for(i=0;i<b;i++)
printf("%2d ",g[i]);
printf("\n");
}
设e、f、i、n、o、r、s、t、x和y均代表互不相同数字(0~9)。编程,输出满足下列算式的各字母所代表的数字。
f o r t y
t e n
+ t e n
------------------
s i x t y
main()
{int e,f,i,n,o,r,s,t,x,y,I,J,K;
for(f=1;f<=9;f++)
for(o=0;o<=9;o++) {if(f==o) continue;
for(r=0;r<=9;r++) {if(r==o) continue;
for(t=1;t<=9;t++) {if(t==r) continue;
for(y=0;y<=9;y++) {if(y==t) continue;
for(e=0;e<=9;e++) {if(e==y) continue;
for(n=0;n<=9;n++) {if(n==e) continue;
for(s=1;s<=9;s++) {if(s==n) continue;
for(i=0;i<=9;i++) {if(i==s) continue;
for(x=0;x<=9;x++) {if(x==i) continue;
{I=f*10000+o*1000+r*100+t*10+y;
J=t*100+e*10+n;
K=s*10000+i*1000+x*100+t*10+y;
if(I+J+J==K) printf("e=%d f=%d i=%d n=%d o=%d r=%d s=%d t=%d x=%d y=%d\n"
,e,f,i,n,o,r,s,t,x,y); break;
}}}}}}}}}}
}
急用啊!!!要考试拉,帮帮忙吧

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

#include <stdio.h>

int func(int n)
{int s,k;
for(k=2,s=1;k<=n/2;k++)
if(n%k==0) s=s+k;
return s;
}

main()
{
int m,i,p,q;
for(m=2;m<=3000;m++)
{
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=2;n<=41;n++)
{for(i=1;i<n;i++)
if(n%i==0) s=s+i;
if(s==n) {e[a]=n;a++;} else;
if(s>n) {g[b]=n;b++;} s=0;//修改在这里!你的S每次记录和后需要恢复成0,不然就会出错!
}
printf("E: ");
for(i=0;i<a;i++)
printf("%2d ",e[i]);
printf("\n");
printf("G: ");
for(i=0;i<b;i++)
printf("%2d ",g[i]);
printf("\n");
}

3.要是我会先写个模板!这么差的效率!呵呵
不巧在baidu上找得!你看看把!
http://test.iask.sina.com.cn/b/4557209.html

外加一句!俺很辛苦!