#include<stdio.h>
double fact(int n);
int main()
{
int m,n,i;
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
for(i=m;i<=n;i++){
if (fact(i)==i)
printf("%5d",i);
}
return 0;
}
double fact(int n)
{
int i,x,y;
double result;
result=0;
for(i=2;i<=x;i++){
if(x%i==0)
y=x/i;
else
y=0;
result=result+y;
}
return result;
}
为什么运行出来是这样的呢
#include<iostream>
#include<math.h>
using namespace std;
void main(){
int i;
long wanshu=0;
int n,x,y;
cout<<"输入n:"<<endl;
cin>>n;
cout<<"输入x:"<<endl;
cin>>x;
cout<<"输入y:"<<endl;
cin>>y;
for(i=1;i<=n;i+=2){
wanshu+=pow(i,3);
if(wanshu==1){
continue;
}
if(wanshu>=x&&wanshu<=y)
cout<<"n以内的完数:"<<wanshu<<"\t"<<endl;
}
system("pause");}
解这个题的方法有很多,我写一个吧!!!x代表m,y代表n(至于n不能输太大,输入10就可以达到你题的要求了,另外我写的是c++,思想没问题)
传个图吧!!!自己看!!!
在1-100之间的完数应该是1.6.28
但是这个程序只输出6.28
怎么改呢
nt fact(int n)
{
int i;
int result;
result=1;
for(i=2;i<n;i++) //待查的因子从1到n
{
if(n%i==0)
result=result+i; //这里要加的是因子
}
return result;
}