📄 subject_43688.htm
字号:
<p>
序号:43688 发表者:ごBBの魔封波 发表日期:2003-06-13 03:38:03
<br>主题:[求助] 刚学C语言 --求"完数"
<br>内容:[求助] 刚学C语言 --求"完数"<BR><BR>#include <stdio.h><BR>#define M 1000<BR>void main()<BR>{<BR> int i,j,s;<BR> for(j=2;j<=M;j++)<BR> {<BR> s=j;<BR> for(i=1;i<j;i++)<BR> {<BR> if((j%i)==0)<BR> s=s-i; /*请问这里为什么要求s=s-i */<BR> }<BR> if(s==0) /* 前面己经要s=j; s有可能等于0吗?*/<BR> printf("%d\n",j);<BR> }<BR>}
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:bird 回复日期:2003-06-13 10:00:29
<br>内容:一个数如果正好等于其因子之和,就称其为"完数"。例如6的因子是1,2,3,并且6=1+2+3,所以6是一个"完数"。<BR><BR><BR>#include <stdio.h><BR>#define M 1000<BR>void main()<BR>{<BR> int i,j,s;<BR> for(j=2;j<=M;j++)<BR> {<BR> s=j;<BR> for(i=1;i<j;i++)<BR> {<BR> if((j%i)==0) //i是否为j的一个因子!如果是,则S减去i<BR><BR> s=s-i; /*请问这里为什么要求s=s-i *///因为因子之和<BR> }<BR> if(s==0) /* 前面己经要s=j; s有可能等于0吗?*///s==0时表示s是j的因子之和<BR> printf("%d\n",j);<BR> }<BR>} <BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:ごBBの魔封波 回复日期:2003-06-13 14:17:00
<br>内容:/*多谢各位。我是刚学到循环。麻烦大家。大家讲解的很详细,谢谢*/<BR><BR>#include <stdio.h><BR>#define M 1000<BR>void main()<BR>{<BR> int k0,k1,k2,k3,k4,k5,k6,k7,k8,k9;<BR> int i,j,n,s;<BR> for(j=2;j<=M;j++)<BR> { n=0; s=j;<BR> for(i=1;i<j;i++) <BR> { <BR> if((j%i)==0)<BR> { n++; s=s-i; <BR> switch(n) /*将每个因子赋给k0,k1....k9*/<BR> {<BR> case 1 : k0=i; break;<BR> case 2 : k1=i; break;<BR> case 3 : k2=i; break;<BR> case 4 : k3=i; break;<BR> case 5 : k4=i; break;<BR> case 6 : k5=i; break;<BR> case 7 : k6=i; break;<BR> case 8 : k7=i; break;<BR> case 9 : k8=i; break;<BR> case 10 : k9=i; break; /*这里n超过11时,怎么办?*/<BR> }<BR> }<BR>}<BR> if(s==0) <BR> {<BR> printf("%d是一个'完数'.它的因子是:",j);<BR> if(n>1)<BR> printf("%d,%d",k0,k1);<BR> if(n>2)<BR> printf(",%d",k2);<BR> if(n>3)<BR> printf("%d",k3);<BR> if(n>4)<BR> printf(",%d",k4);<BR> if(n>5)<BR> printf(",%d",k5);<BR> if(n>6)<BR> printf(",%d",k6);<BR> if(n>7)<BR> printf(",%d",k7);<BR> if(n>8)<BR> printf(",%d",k8);<BR> if(n>9)<BR> printf(",%d",k9);<BR> printf("\n");<BR> }<BR> }<BR>}<BR><BR><BR><BR><BR><BR>还有第二个问题。<BR><BR> 20<BR>求 ∑n! (即求1!+2!+3!+4!+、、、、、+20!)<BR> n=1<BR>等于多少,怎样求?<BR><BR><BR>如果是: 1!+2! 又是多少?<BR><BR>麻烦大家帮忙。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:adam&amp;ancy 回复日期:2003-06-15 20:54:09
<br>内容:#include <iostream.h><BR>void main()<BR>{<BR> int s=1,sum=0,n=1;<BR> <BR> for(n=1;n<=4;n++)<BR> {<BR> s=s*n;<BR> sum=sum+s;<BR> <BR> }<BR> cout<<"sum="<<sum<<endl;<BR> }<BR>20的阶乘!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:adam&amp;ancy 回复日期:2003-06-15 20:55:40
<br>内容:哦,将那个n<=4,该为n<=20就对了!^_^
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:adam&amp;ancy 回复日期:2003-06-15 20:57:51
<br>内容:你上面那道题目,一超过十一,它会break 跳出循环!自己看下continue和break的区别!<BR>^_^
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -