编程输出2到10000之间的所有完数.所谓完数是指因子之和与它本身相等的数.如6=1+2+3,6是一个完数.
#include<stdio.h>#include<math.h>intfactor(intm){inti,s=0;for(i=1;i<m;i++){if(m%i==0)...
#include <stdio.h>
#include <math.h>
int factor(int m)
{
int i,s=0;
for(i=1;i<m;i++)
{
if(m%i==0)
s+=i;
}
if(s==m)
return m;
}
void main()
{
int i,m,sum;
if(i=2,i<=1000,i++)
{
sum=factor(i);
printf("%d\n",sum);
}
}
为什么答案输出的是一啊?要怎么改 展开
#include <math.h>
int factor(int m)
{
int i,s=0;
for(i=1;i<m;i++)
{
if(m%i==0)
s+=i;
}
if(s==m)
return m;
}
void main()
{
int i,m,sum;
if(i=2,i<=1000,i++)
{
sum=factor(i);
printf("%d\n",sum);
}
}
为什么答案输出的是一啊?要怎么改 展开
1个回答
展开全部
//编程找出1000以内的所有完数:
#include <stdio.h>
void main()
{
int x, i, sum;
x = 1;
while(x <= 1000) { //x要从1到1000循环.
sum = 0; //每算一个新的x时,sum要清0
for(i = 1; i < x; i++) if(x % i == 0) sum += i; //如果i是x的因子,sum加上i
if(x == sum) printf("%d\n", x); //如果因子和等于本身.
x++;
}
}
参考:
http://hi.baidu.com/do_sermon/item/7374c5584b5fcb938d12ed48
#include <stdio.h>
void main()
{
int x, i, sum;
x = 1;
while(x <= 1000) { //x要从1到1000循环.
sum = 0; //每算一个新的x时,sum要清0
for(i = 1; i < x; i++) if(x % i == 0) sum += i; //如果i是x的因子,sum加上i
if(x == sum) printf("%d\n", x); //如果因子和等于本身.
x++;
}
}
参考:
http://hi.baidu.com/do_sermon/item/7374c5584b5fcb938d12ed48
更多追问追答
追问
那能帮我看看我的程序错在哪里了么
追答
if(s == m) return m;
如果不等,返回什么呢?
----------
if(i = 2,i<=1000,i++) {
应该是 FOR。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询