求完数(第十一届 省赛 T2)
题目:
那么题目里面有需要求因数之和的程序,那么我们先来写一个求因数之和的程序:
int w(int k) { int ans=0; for(int i=1;i*i<=k;i++) { if(k%i==0) { ans+=i; if(i*i!=k) { ans+=k/i; } } } return ans; }
现在合已给出判断即可:
if(w(i)==2*i) cout<<i<<endl,num++;
完整代码:
#include<bits/stdc++.h> using namespace std; int n; int w(int k) { int ans=0; for(int i=1;i*i<=k;i++) { if(k%i==0) { ans+=i; if(i*i!=k) { ans+=k/i; } } } return ans; } int main() { ios::sync_with_stdio(false); int num=0; cin>>n; for(int i=1;i<n;i++) { if(w(i)==2*i) cout<<i<<endl,num++; } cout<<"*"<<num; return 0; }