如果想显示完全数的因子的话,用数组存储比较合适。你的程序有个逻辑错误。
if(a%b==0)你忘记还有自身也是自身的因子数,导致后面的判别式永远不成立,应改为
if(a%b==0&&a!=b)
自己改了下用数组的:
#include<stdioh>
int
main()
{
int
k[20],a,b,c;
for(a=2;a<=1000;a++)
{c=0;
for(b=1;b<=a;b++)
{
if(a%b==0&&b!=a)
{
k[c]=b;
c++;
}
if(b==a){
int
num=0;
for(int
i=0;i<c;i++)
num=num+k[i];
if(num==a){
printf("%d
",a);
printf("its
factors
is
:
");
for(int
i=0;i<c;i++)
printf("%d
",k[i]);
printf("\n");
}
}
}
}
return
0;
}
#include<stdioh>
void main()
{
int m,s,i;
for(m=2;m<1000;m++)
{
s=0;
for(i=1;i<m;i++)
if((m%i)==0)s=s+i;
if(s==m)
{printf("%d=",m);
for(i=1;i<m;i++)
if(m%i==0 && i==1) printf("%d",i); / 修改 /
elseif(m%i==0)printf("+%d",i); / 添加 /
printf("\n");
}
}
}
以1000以内的完全数为例:
#include<iostream>
using namespace std;
int 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) //如果因子和等于本身
cout<<x<<' '<<endl;
x++;
}
return 0;
}
扩展资料:
c++参考函数
double ceil(double x) 返回不小于x的最小整数
double floor(double x) 返回不大于x的最大整数
void srand(unsigned seed) 初始化随机数发生器
int rand() 产生一个随机数并返回这个数
double poly(double x,int n,double c[])从参数产生一个多项式
double modf(double value,double iptr)将双精度数value分解成尾数和阶
参考资料来源:百度百科-C++
以上就是关于c语言:完全数程序全部的内容,包括:c语言:完全数程序、C语言求完数的程序、C++求完全数的程序怎么写啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)