python第七周(练习题)


1.求最大素数(没啥好说的,直接暴力)

import math
n = int(input())
list=0
for i in range(2,n):
    a=0
    for k in range(2,10):
        if i%k==0:
            a=1
    if a==0:
       list=i
print(list)

2.分解质因数(本来c++昨天刚写过,今天换一种语言,我感觉写程序两种语言都搞混了,唉)

n = num = int(input())  #用num保留初始值
f = []  #存放质因数的列表
for j in range(int(num/2)+1):  #判断次数仅需该数字的一半多1次
    for i in range(2, n):
        t = n % i  #i不能是n本身
        if t == 0:  #若能整除
            f.append(i)  #则表示i是质因数
            n = n//i
            break
if len(f) == 0:  #若一个质因数也没有
    print('该数字没有任何质因数。')
else:  #若至少有一个质因数
    f.append(n)
    f.sort()  #排下序
    print(f)

3.N位水仙花数(老生常谈了)

n = int(input())
list2=[]
for i in range(10**(n-1),10**n):
  str1=str(i)
  sum1=0
  for j in str1:
    num=int(j)
    sum1+=num**n
  if i==sum1:
    list2.append(i)
for j in (list2):
    print(j)

4.判断闰年(重点是找到3个边界条件,没啥办法,记住就行)

year = int(input())
if (year % 4) == 0:
   if (year % 100) == 0:
       if (year % 400) == 0:
           print("True")   # 整百年能被400整除的是闰年
       else:
           print("False")
   else:
       print("True")       # 非整百年能被4整除的为闰年
else:
   print("False")

5.完数(这个格式化输出气煞我也,耗费20多分钟格式化)

k = int(input())
for i in range(2, 1000):
    if k:
        l1 = []
        for j in range(1,i):
            if i % j == 0:
                l1.append(j)
        num = sum(l1)
        if num == i:
            print ("%d="%i,sep='',end='')
            for i in range(len(l1)):
                if i == len(l1) - 1:
                    print ("%d"%l1[i],sep='',end='')
                else:
                    print ("%d+"%l1[i],sep='',end='')
            k = k-1
            print("")

6.自定义幂函数(半分钟)

def fun(x,n):
    sum = 1
    for i in range(n):
        sum *= x
    print(sum)
x,n = map(int,input().split())

fun(x,n)

7.累加函数(半分钟)

def mysum(n):
    sum = 0
    for i in range(1,n+1):
        sum += i
    print(sum)
n = int(input())
mysum(n)    

8.阶乘(半分钟)

def fun(n):
    sum = 1
    for i in range(1,n+1):
        sum *= i
    return sum
n = int(input())
result = 0
for i in range(1,n+1):
    result += fun(i)
print(result)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值