题解 UVA1180 【Perfect Numbers】
tongyf
·
·
题解
题面
思路:
完全数的定义:所有因子(不包括自己)的和等于自己的数
判断完全数的方法:
如果p是质数,而且2^p-1是质数,那么(2^p-1)(2^{p-1})是完全数
$p$也可以暴力判断
代码:
```cpp
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,p;
bool prime(int x){
if(x<2) return 0;
if(x==2) return 1;
for(int i=2;i<=sqrt(x);i++){
if(x%i==0) return 0;
}
return 1;
}
signed main(){
int n,p;
char c;
cin>>n;
for(int i=1;i<=n;i++){
cin>>p;
if(i<n) cin>>c;
if((prime(p))==1&&prime((pow(2,p))-1)==1)
cout<<"Yes\n";
else
cout<<"No\n";
}
return 0;
}
```