1. 程式人生 > >判斷完數、輸出完數---C++

判斷完數、輸出完數---C++

1、判斷輸入是否是完數。

#include <iostream>
using namespace std;
int main()
{
    int sum=0;
    int n;
    cin>>n;
    for(int i=1; i<n; i++)//這裡可以換成int i=1;i<=n/2;i=i+2
    {
        if(n%i==0)
        {
            sum=sum+i;
        }
    }
    if(sum==n)
    {
        cout<<"yes"<<endl;
    }
    else
{ cout<<"no"<<endl; } }

2、判斷完數,先把小於10000的完數全部找出來。

#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)//先把小於10000的完數找出來
    {
        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; cin>>n; vector<int>::iterator it; for(it=a.begin(); it!=a.end(); it++) { if(*it==n) cout<<"yes"<<endl; } }

3、輸出一定範圍內的完數。

#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)//先把小於10000的完數找出來
    {
        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;
    cin>>n;
    for(int i=1; i<=a.size(); i++)
    {
        if(a[i]<n) cout<<a[i]<<endl;
    }

}

4、輸出一定範圍的完數。

#include <iostream>
#include<vector>
using namespace std;
int main(int argc, char* argv[])
{
    int n;
    cin>>n;
    vector<int> v;
    for(int j=1; j<=n; j++)
    {

        int sum=1;
        for(int i=2; i<j; i++)
        {
            if(j%i==0)
            {
                sum=sum+i;
            }
        }
        if(sum==j) {
            v.push_back(j);
            cout<<v[v.size()-1]<<endl; //此處不能用j-1;
        }
    }
//    vector<int>::iterator it;
//    for(it=v.begin(); it!=v.end(); it++)
//    {
//        cout<<*it<<endl;
//    }
}