如题:两个不同的自然数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。
一开始我看错题了,以为亲密数是两个因数之和相等的数,于是我们学校的oj就理所当然的显示“输出超出限制”,于是改了一下。不出所料超时了,我一开始写了三个for循环(一个在用来计算因数和的函数里,两个在把数字一一列举做对比)。
于是打算减少一个循环或者把循环改简单
改的第一版
#include <stdio.h>
int main()
{
int a, b, i, n;
for (a = 1; a <= 3000; a++)
{
for (b = 0, i = 1; i <= a /

博客内容讲述了博主在解决寻找3000以内亲密数的问题时,从最初的超时解决方案,逐步优化到快速得出答案的过程。最初由于理解错误导致超时,接着减少了循环次数并使用函数计算因数和,最终发现只需判断数是否等于其因数和的因数和,实现了简洁高效的代码。
最低0.47元/天 解锁文章
670

被折叠的 条评论
为什么被折叠?



