2 条题解

  • 1
    @ 2025-12-22 11:33:55
    #include<bits/stdc++.h>
    using namespace std;
    bool check(int x){
    	int sum=0;
    	for(int i=1;i*i<=x;i++)
    		if(x%i==0){
    			sum+=i;
    			if(i*i!=x)sum+=x/i;
    		}
    	return sum-x==x;
    }
    int main(){
        int n;
        cin>>n;
    	for(int i=2;i<=n;i++)
    		if(check(i))cout<<i<<endl;
    	return 0;
    }
    
    • 0
      @ 2025-12-19 21:11:20

      n = int(input())

      for num in range(2, n + 1): sum_div = 1 # 1 一定是因数(除非 num = 1,但我们从 2 开始) d = 2 while d * d <= num: if num % d == 0: sum_div += d other = num // d if other != d: # 避免重复加平方数的情况 sum_div += other d += 1 if sum_div == num: print(num)

      • 1

      信息

      ID
      6984
      时间
      1000ms
      内存
      128MiB
      难度
      1
      标签
      递交数
      3
      已通过
      3
      上传者