运用c语言输出100以内所有的完全数

 我来答
飞喵某
高粉答主

2019-07-10 · 说的都是干货,快来关注
知道答主
回答量:631
采纳率:0%
帮助的人:29.4万
展开全部

1、首先打开vs 2017软件,打开一个准备好的工程,新建一个C语言文件,先写入头文件和main函数,里面定义需要的用到的4个变量。

2、然后先定义一个for循环遍历100以内的所有数,利用条件语句进行判断j是不是i的因子,是的话就相加,判断完成后在判断因子是不是和原来的数相等即可,盘点完输出完成判断的数字,如此往复直到判断完100个数为止。

3、最后按Crtl+F10运行程序,可以看到100以内的完数都输出了。

--
2022-12-05 广告
#include #include #define maxnum 100 int main() { int i,n,sum; cout<<maxnum<<"以内的完全数为:\n"; for(n=1;n<=maxnum;n++) ... 点击进入详情页
本回答由--提供
莫道無情
2019-07-09 · TA获得超过1.5万个赞
知道答主
回答量:317
采纳率:100%
帮助的人:8.5万
展开全部

#include<stdio.h>

int main()

{

int x, i, sum;

for (x = 3; x <= 1000; x++)

{

sum = 1; //初始化sum

for (i = 2; i <= x/2 ; i++) //从2开始,1不是完数

{

if (x%i == 0)sum +=i;

}

if (sum == x)printf("%d its factors are 1 ", x);//找到完数,感觉是为了“,”处理方便,所以在这里的末尾加了1

if (sum == x)

{

for (i = 2; i <= x / 2; i++)

{

if (x% i == 0)printf(",%d ", i);//找到完数的因子

}

printf("\n");

}

}

return 0;

}

扩展资料:

如果一个数恰好等于它的因子之和,则称该数为“完全数”。

第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。

第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。

第三个完全数是496,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。后面的完全数还有8128、33550336等等。

参考资料:百度百科-完全数

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吉祥二进制
高粉答主

推荐于2017-12-16 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84578

向TA提问 私信TA
展开全部

  简单的写了一个,源码如下:

#include <stdio.h>
int main()
{
 int i,j;
 int sum;
 for(i=1;i<=100;i++)
 {
sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)
sum+=j;
}
if(sum==i)
{
printf("%d its factors are ",i);
for(j=1;j<i;j++)
{
if(i%j==0)
printf("%d ",j);
}
printf("\n");
}
 }
 return 0;
}

  执行结果如下:

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
月光疾风_Free
2015-03-26 · TA获得超过681个赞
知道小有建树答主
回答量:262
采纳率:0%
帮助的人:213万
展开全部
#include<stdio.h>
int perfectNum(int);

int main()
{
int count=0;
int k[50]={0};
for(int i=1;i<=100;i++)
{
if(perfectNum(i) != -1)
{
k[count] = perfectNum(i);
count++;
}
}
printf("100以内的完全数有%d个,分别如下:\n", count);
for(i=0;i<count;i++)
{
printf("%d\t", k[i]);
}
printf("\n");
return 0;
}


int perfectNum(int n)
{
int i,j,cnt=0,sum=0;
int a[20]={0};
for(i=1;i<n;i++)
{
if(n%i==0)
{
a[cnt]=i;
cnt++;
}
}
for(j=0;j<cnt;j++)
{
sum += a[j];
}
if(sum == n)
return n;
else
return -1;
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿蒙同学
2015-03-26 · TA获得超过338个赞
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:94.2万
展开全部
#include <stdio.h>
int main()
{
int i,n;
for (n=1;n<=100;n++)
{
for (int sum=0;i=1;i<=n/2;i++)
{
if (n%i==0)
sum+=i;
}
if (sum==n)
printf("%d\t",n);
}
}

100以内的完全数只有1+2+3=6 ,1+2+4+7+14=28两个数,你试试行不行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式