题解 UVA1180 【Perfect Numbers】

· · 题解

题面

思路:

完全数的定义:所有因子(不包括自己)的和等于自己的数

判断完全数的方法:

如果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; } ```