思路:模拟
根据题意,我们需要求出给定 的所有除自己以外的约数并求和,最后判断元素和 是否等于给定元素 ,由于给定 的范围最大到 ,所以找约数时找到 即可。特别地,为了保证 为完全平方数时不重复计算平方根,在加和时需要特判。
代码:
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll n; cin >> n; ll sum = 0; for(int i = 2; i <= n / i; i++) { if(n % i == 0) { if(i * i == n) { sum -= i; } sum += i; sum += n / i; } } if(sum + 1 == n) { cout << "Pure"; } else if(sum + 1 > n) { cout << "Late"; } else { cout << "Early"; } }
复杂度分析
时间复杂度:
空间复杂度: