• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++列出完数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

题目内容:自然数中,完数寥若晨星,请在从1到某个整数范围中打印出所有的完数来。所谓“完数”是指一个数恰好等于它的所有不同因子之和。例如,6是完数,因为6=1+2+3。而24不是完数,因为24≠1+2+3+4+6+8+12=36)。

输入描述:输入数据中含有一些整数n(1<n<10000)

输出描述:对于每个整数n,输出所有不大于n的完数。每个整数的输出由n引导,跟上冒号,然后是由空格开道的一个个完数,每个n的完数列表应占独立的一行。

题目分析:本题限时一秒。先把小于10000的完数计算出来,放在向量中,然后对于每个n,只需在常量中打印每个完数,直到n之内的完数的界即可。这种算法不会超时。

参考代码:

#include <fstream>
#include <iostream>
#include <vector>
using namespace std;

int main(int argc,char * argv[])
{
    vector<int> a;
    for(int i=2;i<10000;i=i+2)
    {
            int sum=1;
            for(int j=2;j<=i/2;j++)
            {
                    if(i%j==0) sum=sum+j;
            }
            if(sum==i) a.push_back(i);
    }
    
    int n;
    while(cin>>n)
    {
                 cout<<n<<":";
                 for(int i=0;i<a.size();i++)
                 {
                         if(a[i]<=n) cout<<" "<<a[i];
                 }
                 cout<<endl;
    }
    system("pause");
    return 0;
}

运行结果:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#中DataReader类的使用方法发布时间:2022-07-14
下一篇:
c#中Class和Struct使用与性能的区别发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap