欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言程序——找最大完全数

程序员文章站 2022-05-21 08:46:57
...

【问题描述】完全数是特殊的自然数。它所有的真约数(即除了自身以外的约数)的和,恰好等于它本身。 第一个完全数是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。 输入一个整数m,输出区间[1,m]内最大的完全数。

【输入形式】输入一个整数m,m<=1e4。

【输出形式】输出不超过m的最大完全数。

【样例输入】7

【样例输出】6

感受以及思路
感觉还可 嗯
先找出公因子 所有公因子相加 与原数相比较
若符合则是完全数 不符合不是完全数
找出所有完全数 循环 找最大的完全数

C++

#include<iostream>
using namespace std;
int main()
{
int m,s=0,i,n;
cin>>m;
for(n=m;n>=6;n--)
{
s = 0;
for(i=1;i<=n/2;i++)
if(n%i==0)
s+=i;
if(s==n)
{
cout<<n<<endl;
break;
}
}
return 0;
}