python3学习每日一题(1)

本文介绍了完美数的概念,即一个数的所有真因子之和等于它本身的数。文章通过示例解释了如何判断一个数是否为完美数,并提供了两种Python代码实现,包括计算1到10000的完美数表并进行匹配,以及更简洁的解决方案。此外,还提供了一个简单的输入输出示例来验证代码的正确性。
摘要由CSDN通过智能技术生成


前言

了解完美数并会使用python3计算完美数


一、完美数是什么?

完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的真因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。截至2018年,相关研究者已经找到51个完全数。
例如:
第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。
第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28

二、题目

A perfect number is a number where the sum of all the proper factors (factors which are not the number itself) is equal to the number itself.

You are given a number N and your program must output perfect if N is perfect, and not perfect if N is not perfect.
Input
Line 1: N, the number you must check whether it’s perfect or not
Output
Line 1: perfect or not perfect depending on if the number is perfect or not
Constraints
1 ≤ N ≤ 10^4
Example
Input
11
Output
not perfect

解题思路

计算出1到10000的完美数表,拿输入的数字与表中进行比较
实现代码如下:

#完美数
import sys
import math
# coding:utf-8
n = int(input())
a=range(1,10000)
b=range(1,10000)
result=[]
for i in a:
    tmp=[]
    for k in b:
        if k<i:
            if not i%k:
                tmp.append(k)
            else:
                continue
        else:
            break
    count=0
    for m in tmp:
        count=count+m
    if count==i:
        result.append(i)
    else:
        continue

if n in result:
    print("this number is perfect")
else:
    print("this number is not perfect")


总结

在这里贴上大佬的解决方法快速得到1-10000的完美数

i=int(input())
s=0
for k in range(1,i):
  if i%k==0:
    s=s+k
if i==s:
  print ("yes")
else: print("no")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值