top1编程
← 返回题目
题解

【入门】输出m和n范围内的完全数(完美数)

1 条题解

  • 0
    @ 2026-7-30 1:09:50

    解题思路

    枚举范围内的每个数,求它所有真因数的和,和自身相等时就是完全数。

    参考代码

    // 读取题目给出的数据。
    // 按照题意完成计算。
    // 这道题的做法:先读入题目给出的数据,再用简单的循环和判断完成要求。
    #include<iostream>
    #include<cmath>
    using namespace std;
    bool WanMeiShu(int n){
    	
    	int s;
    	int j;
    	s=1; 
    	
    	
    	for(int i=2;i<=sqrt(n);i++){
    		if(n%i==0){
    			s=s+i;
    			j=n/i;
    			
    			if(i!=j){
    				s=s+j;
    			}
    				
    		}
    	}
    	
    	if(s==n)
    		return true;
    	else
    		return false;
    	
    }
    
    int main(){
    	
    	int n,m;
    	cin>>m>>n;
    	
    	for(int i=m;i<=n;i++){
    		
    		if(WanMeiShu(i)){
    			cout<<i<<" ";
    		}
    	}
    }
    

    复杂度

    代码只使用了简单变量、循环和判断。若循环检查了 n 个数据,时间复杂度通常为 O(n);没有开辟与输入规模相关的额外数组时,空间复杂度为 O(1)。

    • 1