运行上述代码,我们可以得到1000以内的所有完全数:3,6, 28, 496. 这些就是我们要求的答案。 这个问题可以通过编程的方式进行解答。首先,我们需要编写一个函数来判断一个数是否是完全数,这个函数的核心思想是找出这个数的所有因子,并求和,然后和这个数本身进行比较,如果相等则这个数是完全数。接着,我们就可以通过循环...
大哥帮帮忙试求出1000以内的“完全数”。(提示:如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。如:6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。) main() { int i,a,m; for(i=1;i<1000;i++) { for(m=0,a=1;a<=i/2;a++) if(!(i%a)) (...
1、1不是完全数,所以printf("1=1");没有必要打,并且打印完之后没有\n换行 2、m没有初始化,需要在for(i=1;i<j;i++)之前初始化m=0 3、最后的printf("\n");需要放在if(m==j)判断里面,不然每一次for(j=2;j<=1000;j++)循环都会打印一个换行符,前面输出的结果就没了。 修改后的代码如下,楼...
include<stdio.h> main(){ int i,j,n,s=0;printf("1到1000的完数有:");for(i=1;i<=1000;i++,s=0){for(j=1;j<=i/2;j++)if(i%j==0) s+=j;if(i==s) printf("% d",s);} }
void WS(int);void main(){ int n; for(n=1;n<=1000;n++) WS(n); }void WS(int m){ int i,sum=0; for(i=1;i<m;i++) { if(m%i==0) { sum=sum+i; } } if(sum==m) { printf("\n完数为%d = ",m); int j;...
int main(){ int a,i;for(a=1;a<=1000;a++){ int A[100]={0},j;j=0;for(i=1;i=0;j--){ b=b-A[j];} if(b==0){ printf("%d=",a);for(j=0;j<n-1;j++){ printf("%d+",A[j]);} printf("%d\n",A[j]);} } return 0;} ...
for (;n>1;n--){p=n;s=1; //缺少的内容 for (a=2;a<n;a++){ if (n%a==0)s+=a;} if (s==p)i++;} cout<<"0到"<<m<<"之间的完全数的个数是:"<<i<<endl;} 错误原因:循环里面少了一个sum=1的初始化,否则当做了第一个数后一直在累加,所以i一直是0 ...
b=2;while((a/b)>1) { if(a%b==0) { c=c+b; b++;} else b++; }b = 2要放到 while 外面
m赋一个初始值试试吧
完全数 : 其所有因子的的和等于该数(包括1,但是不包括该数字本身) package judgment; /** *求1~1000的所有完全数 */ public class Judgment { public static voidmain(String[] args) { for (int i =1; i <=1000; i++) { int num=0; ...