求正整数2和n之间的完全数

【题目描述】

求正整数22和nn之间的完全数(一行一个数)。

完全数:因子之和等于它本身的自然数,如6=1+2+36=1+2+3

【输入】

输入n(n5000)n(n≤5000)。

【输出】

一行一个数,按由小到大的顺序。

【输入样例】

7

【输出样例】

6
 1 #include<cstdio>
 2 #include<cmath>
 3 int n;
 4 bool perfect(int a){
 5     int sum=1;
 6     for(int i=2;i<=sqrt(a);i++){
 7         if(a%i==0) sum+=i+a/i;
 8     }
 9     if(a==sum) return true;
10     else return false;
11 }
12 int main(){
13     scanf("%d",&n);
14     for(int i=2;i<=n;i++){
15         if(perfect(i)) printf("%d
",i);
16     }
17     return 0;
18 }

一道很水的函数题,

没啥可说的,

就是用一个函数判断是否为完全数;

是,就输出,

水完了qwq(溜了溜了)

原文地址:https://www.cnblogs.com/sxy2004/p/12246430.html