n,k=map(int,input().split(" "))
arr=[int(i) for i in input().split()]
result=[0]*25
#扩容
for i in range(1,20):
arr.append(0)
arr.insert(0,0)#把信息顶到一位,从一位开始记录
res=0
def sushu(sum):
for i in range(2,sum):
if sum%i==0:
return False
return True
def dfs(x,start):
global res#全局变量才可以在函数里改值
if x>k:
sum=0
for i in range(1,x):
sum+=result[i]
if sushu(sum):
res+=1
return
for i in range(start,n+1):
result[x]=arr[i]
dfs(x+1,i+1)
result[x]=0
dfs(1,1)#第几个坑位,start第几个数字
print(res)
代码2
n,k=map(int,input().split(" "))
a=0
arr=[int(i) for i in input().split(" ")]
for i in range(1,20):
arr.append(0)
arr.insert(0,0)
def sushu(sum):
for i in range(2,sum):
if sum%i==0:
return False
return True
def dfs(i,nums,sum):
global a
if nums==k:
if sushu(sum):
a=a+1
elif i<=n:
dfs(i+1,nums,sum)
dfs(i+1,nums+1,sum+arr[i])
dfs(1,0,0)#i代表第几个数字,nums代表选了几个数字,分为两种情况,要是选了则nums+1,并且sum值加上
print(a)
#deep代表这是第几个地方,deep<r