记得完数包括1,直接遍历求余数为0即可,没什么可以记录的,看代码吧,记得P数组开大点
#include<iostream>
using namespace std;
int N;
int TO(int NNN) {
int sum = 0;
int t = NNN;
for(int i = 1; i < t; i++) {
if(t % i == 0) {
sum += i;
}
}
if(sum == NNN) return 1;
else return 0;
}
int main() {
while(~scanf("%d",&N)) {
int ds = 0;
int P[10000] = {0};
for(int i = 1; i<=N; i++) {
if(TO(i)==1)
P[ds++] = i;
}
for(int i =0; i < ds; i++) {
if(i) printf(" ");
printf("%d",P[i]);
}
if(ds!=0)
printf("\n");
}
return 0;
}