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;
// }
}