判斷完數、輸出完數---C++
阿新 • • 發佈:2019-02-13
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;
// }
}