如何检查号码是否为半原始号码

2024-10-01 13:44:01 发布

您现在位置:Python中文网/ 问答频道 /正文

def is_prime(num):

    if num > 1:

        for i in range(2,num):

如果(num%i)==0,则返回False:

^{pr2}$

如果为prime,则返回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)

是素数(d1)和是素数(d2)仔细检查,不要告诉我是真是假,他们只发送空行

               return is_prime(d1) and is_prime(d2)
            return False

is_semiprime()

当它返回is_prime(d1)和is_prime(d2)时,如果两者都为真,则返回True


Tags: infalsetrueforreturnifisdef
2条回答

number=int(input())

s=数量

x=[]

对于范围内的i(2,数字+1):

if s%i==0:

    x.append(i)

    s=s//I

    if s==i or (i>s and s!=1):

        x.append(s)

如果长度(x)==2:

^{pr2}$

其他:

print(f"{number} is not a semiprime number because it is the product of {len(x)} primes: ",end="")

对于x中的i:

if i==x[-1]:

    print(i)

else:

    print(str(i)+"*",end="")

半素数是两个素数的乘积。所以算法很简单:

  1. 找到这个数的一个除数,称之为d1。在
  2. 把这个数除以d1得到第二个除数d2。在
  3. 测试d1和{}是否都是素数。如果是,那么原始数是半素数。在

代码:

def is_semiprime(n):
    for d1 in range(2, int(n**.5)+1):
        if n % d1 == 0:
            d2 = n / d1
            return is_prime(d1) and is_prime(d2)
    return False

def is_prime(n):
  if n == 2 or n == 3: return True
  if n < 2 or n%2 == 0: return False
  if n < 9: return True
  if n%3 == 0: return False
  r = int(n**0.5)
  f = 5
  while f <= r:
    if n%f == 0: return False
    if n%(f+2) == 0: return False
    f +=6
  return True    

def ask_semiprime():
    num = int(input("What number would you like to check?"))
    if is_semiprime(num):
        print(num, " is semiprime")
    else:
        print(num, " is not semiprime")

ask_semiprime()

我从isPrime Function for Python Language复制了is_prime函数

相关问题 更多 >