本题要求计算并输出不超过n的最大的k个素数以及它们的和。
输入格式:
输入在一行中给出n(10≤n≤10000)和k(1≤k≤10)的值。
输出格式:
在一行中按下列格式输出:
素数1+素数2+…+素数k=总和值
其中素数按递减顺序输出。若n以内不够k个素数,则按实际个数输出。
输入样例1:
1000 10
输出样例1: 997+991+983+977+971+967+953+947+941+937=9664
输入样例2:
12 6
输出样例2: 11+7+5+3+2=28
import math
n, m = map(int, input().split())
def isprim(k):
if k<=1:
return False
else:
for i in range(2,int(math.sqrt(k))+1):
if k%i==0:
return False
return True
num = 0
while n>1 and m>0:
if isprim(n)==1:
num+=n
print(n,end="")
if m>1 and n>2:
print("+", end="")
m -= 1
n-=1
print("=%d" % num)
这个函数可以判断是不是素数:
def isprim(k):
if k<=1:
return False
else:
for i in range(2,int(math.sqrt(k))+1):
if k%i==0:
return False
return True