列表

详情


NC213387. 完全数

描述

若一个数除了自己本身以外,所有因子之和等于它自己,那么称这个数为“完全数”。
例如,6的因子有1,2,3,6,1+2+3=6,所以6是完全数。
而8的因子有1,2,4,8,1+2+4=7,所以8不是完全数。
同样的,我们定义:若一个数除了自己本身以外,所有因子之和大于它自己,那么称这个数为“过剩数”,例如12。
若一个数除了自己本身以外,所有因子之和小于它自己,那么称这个数为“不足数”,例如8。
输入一个数,判断它是完全数、过剩数还是不足数。

输入描述

一个正整数     

输出描述

如果是完全数,则输出“Pure”。
如果是过剩数,则输出“Late”。
如果是不足数,则输出“Early”。

示例1

输入:

28

输出:

Pure

说明:

1+2+4+7+14=28

示例2

输入:

15

输出:

Early

说明:

1+3+5=9<15

示例3

输入:

72

输出:

Late

说明:

1+2+3+4+6+8+9+12+18+24+36>72

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang11) 解法, 执行用时: 31ms, 内存消耗: 412K, 提交时间: 2021-05-16 15:17:28

#include<stdio.h>
int main()
{
	long long i,sum=0,n;
	scanf("%lld",&n);
	for(i=2;i*i<n;i++)
	if(n%i==0){
		sum+=i;sum+=n/i;
	}
	if(i*i==n)sum+=i;
	sum+=1;
	if(sum>n)printf("Late");
	else
	if(sum==n)printf("Pure");
	else
	printf("Early");
}

C++(clang++11) 解法, 执行用时: 36ms, 内存消耗: 380K, 提交时间: 2020-11-29 18:43:22

#include<cstdio>
typedef long long LL;
LL a;
LL s=1;
int main()
{
	scanf("%lld",&a);
	for(LL i=2;i*i<=a;i++)
	if(a%i==0)s+=i,s+=a/i;
	if(s==a)puts("Pure");
	else puts(s>a?"Late":"Early");
	return 0;
}

Python3 解法, 执行用时: 410ms, 内存消耗: 4580K, 提交时间: 2023-02-05 15:55:30

n= int(input())
ans=1
for i in range(2,int(n**0.5+1)):
    if(n%i==0):ans+=(i+n/i)
if(int(ans)==n):print("Pure")
elif(int(ans)>n):print("Late")
else:print("Early")

上一题