簡體   English   中英

我如何檢查數字是否為半素數

[英]How do i check if the number is semi prime

def is_prime(num):

    if num > 1:

        for i in range(2,num):

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

            if (num % i) == 0:
                return False

如果素數返回真

        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

半質數是兩個質數的乘積。 所以算法很簡單:

  1. 找到該數字的一個除數,將其稱為d1
  2. 將數字除以d1以獲得第二個除數d2
  3. 測試d1d2是否都是素數。 如果是,那么原始數是半素數。

代碼:

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()

我從is_prime Function for Python Language復制了is_prime函數

數字=整數(輸入())

s=數字

x=[]

對於范圍內的 i (2,number+1):

if s%i==0:

    x.append(i)

    s=s//I

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

        x.append(s)

如果 len(x)==2:

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

別的:

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="")
def check_prime(n): #for checking wheather prime or not
    if n > 1:
        if n == 2: return True
        for i in range(2,n):
            if n % i == 0:
                return False
                break
        return True
    return False
def primeproduct(m): #for checking wheather prime product or not 
    if m >= 0:
      for i in range(1,m):
        if m%i == 0 and check_prime(i) and check_prime(m//i):
            return True
            break
    return False
  

這可能有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM