在Python中检查一个数字是否可以表示为两个半素数的和
半素数是可以用两个素数的乘积表示的数。示例:55=5*11 我试图编写一个Python程序,检查一个数字是否可以表示为两个不一定不同的半素数之和 例1: 输入:30 输出:是 说明:30可以表示为15+15,其中15是半素数,因为它是两个素数的乘积,5*3 例2: 投入:62 输出:否 说明:尽管62本身是一个半素数31*2,但它不能表示为两个半素数的和 这是我试图做的,但并非在所有情况下都有效 最大值=200 arr=[] sprime=[False]*MAX def computeSP: 对于范围2中的i,最大值: cnt,num,j=0,i,2在Python中检查一个数字是否可以表示为两个半素数的和,python,Python,半素数是可以用两个素数的乘积表示的数。示例:55=5*11 我试图编写一个Python程序,检查一个数字是否可以表示为两个不一定不同的半素数之和 例1: 输入:30 输出:是 说明:30可以表示为15+15,其中15是半素数,因为它是两个素数的乘积,5*3 例2: 投入:62 输出:否 说明:尽管62本身是一个半素数31*2,但它不能表示为两个半素数的和 这是我试图做的,但并非在所有情况下都有效 最大值=200 arr=[] sprime=[False]*MAX def computeSP: 对
而cnt62,如您所述,可以表示为2个半素数的和,即58和4,即62=58+4 58可以表示为29,2素数的因子 4可以表示为2,2素数的因子 因此,你的问题的答案是你的逻辑是错误的,因为62也可以用类似的方式表达 如果您需要代码,请点击这里:
import math
def factors(n):
bool = False
for i in range(2, n):
if n % i == 0:
a = i
b = int(n / a)
if prime_number(a) and prime_number(b):
print("factors of ",n,"is",a,b)
bool = True
break
return bool
def prime_number(m):
prime = True
for i in range(3, m):
if m % i == 0:
prime = False
break
return prime
if __name__ == '__main__':
num = int(input())
z = math.ceil(num/2)
a = "NO"
for i in range(1, z):
x = i
y = num - i
if factors(x) and factors(y):
print("diff x,y=", x, y)
a = "YES"
break
print(a)
更具体地说:在哪些情况下它会失败?