20201213c亲密数

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

如题:两个不同的自然数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 / 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值