这个C语言怎么做,一直搞不懂???

来源:百度知道 编辑:UC知道 时间:2024/05/09 20:58:43
#include <stdio.h>
int main(void)
{
int factor, m, n, number, sum;
int repeat, ri;

scanf("%d",&repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d%d", &m, &n);
printf("result:\n");

for(sum=0,number=m;number<=n;number++){
printf("%d = 1", number);
for(factor=2;factor<=number;factor++)
if(number%factor==0)
sum=sum+factor;
if(sum==number)

printf(" + %d", factor);
printf("\n");
}

}
}
输入两个正整数 m 和 n(1<=m, n<=1000),输出 m 到 n之间的所有完数,并输出其因子。一个数如恰好等于它的因子之和,这个数称为完数,例如,6=1+2+3,其中1、2、3为因子,6为因子和。
我这么做是错的,但我也不知道怎么做
答好了,我加20分

#include<iostream>
using namespace std;
int main()
{int m,n,k,s,i;
cin>>m>>n;
for(k=m;k<=n;k++)
{s=0;
for(i=1;i<k;i++)
if((k%i)==0)s+=i;
if(s==k)
{cout<<k<<" "<<"is."<<endl;
cout<<"its factors are:";
for(i=1;i<k;i++)
if(k%i==0)cout<<i<<" ";
cout<<endl;
}
}
return 0;
}

输出的时候,把以前的参数保存到字符串里,再最后输出
for(sum=0,number=m;number<=n;number++){
string str="";
for(factor=2;factor<=number/2;factor++)
if(number%factor==0)
{
sum=sum+factor;
str+="+"+factor;
}
if(sum==number)

printf("%d = 1", number);
printf("%d", str);
printf("\n");

}

根据你的我改了一下