【发布时间】:2018-10-06 11:37:23
【问题描述】:
def is_prime(num):
if num > 1:
for i in range(2,num):
如果 (num % i) == 0 则返回 False:
if (num % i) == 0:
return False
如果素数返回 True
else:
return True
如果不是素数则返回 False
else:
return False
def is_semiprime():
n = int(input("Enter a number to find out if its semiprime or not\n>>> "))
for d1 in range(2, int(n**.5)):
if n % d1 == 0:
d2 = int(n / d1)
is_prime(d1) 和 is_prime(d2) 会通过,不告诉我是真是假,他们只是发送空行。
return is_prime(d1) and is_prime(d2)
return False
is_semiprime()
当它返回is_prime(d1)和is_prime(d2)时,如果它们都是True则返回True
【问题讨论】:
-
你的问题是 (a) 你不知道什么是半素数,(b) 你不知道测试半素数的算法,或者 (c) 你知道,但是你'被困在实施它的某个特定步骤上?如果是 (c),请向我们展示您会知道如何编写的代码,并指出差距(如
count += 1 # I know I need to do count += n if i**n divides num but I don't know how to get n)。 -
写一个函数来检查一个数是否是素数。编写另一个获取数字的两个因子的函数,并在它们两个上调用
isPrime()函数。如果两者都为真,则该数是半素数。 -
@Barmar 60 的“两个因素”是什么?还是 5 个?
-
@abarnert 如果数字不是素数,您应该能够找到一个因子。将数字除以该因子以获得另一个因子。然后检查这两个是否都是素数。
-
@Barmar (b) 我不知道测试半素数的算法。半素数也是由两个素数组成的数字,所以我如何对其进行编码以检查它
标签: python if-statement range