c语言一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数
2022-09-28 · 百度认证:北京惠企网络技术有限公司官方账号
可以参考下面的代码:
include <iostream>
using namespace std;
int main() {
for (int i = 2; i <= 1000; i++) {//从2到1000的数
int sum = 0;//因子总和
for (int j = 1; (j * j) <= i; j++) {//j做除数,√n复杂度,减少一半的计算量
if (i % j == 0) {//可以整除,为其因子
sum = j + (i / j) + sum;//因子之和
}
}
if ((sum - i) == i) cout << "1000以内的完数:" << i << endl;//因子之和减去其本身(1*i也为其因子)如果等于这个数本身,则为完数
}
}
扩展资料:
在梅森素数的基础研究方面,法国数学家鲁卡斯和美国数学家雷默都做出了重要贡献;以他们命名的“鲁卡斯-雷默方法”是目前已知的检测梅森素数素性的最佳方法。另外,中国数学家、语言学家周海中给出了梅森素数分布的精确表达式;这一研究成果被国际上命名为“周氏猜测”。
需要指出的是,完全数其实目前并不“完全”,它还有一些谜团尚未解决。例如:完全数是有限还是无穷多个,存在不存在奇完全数,这是当今数论领域的两大著名难题。这些难题与其它科学难题一样,有待人们去攻克。正如德国数论专家西格尔所言:“待到它们被完全破解时,完全数才算是真正的完全数。”
参考资料来源:百度百科-c语言