Как я могу проверить, является ли число полупростым - PullRequest
0 голосов
/ 26 апреля 2018
def is_prime(num):

    if num > 1:

        for i in range(2,num):

return False, если (num% i) == 0:

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

return True, если простое число

        else:
            return True

return 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) проходят и не говорят мне, что true или false, они просто посылают пустые строки.

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

is_semiprime()

когда он возвращает is_prime (d1) и is_prime (d2) если они оба имеют значение True, верните True

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

число = 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)

если 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="")

для i in x:

if i==x[-1]:

    print(i)

else:

    print(str(i)+"*",end="")
0 голосов
/ 28 апреля 2018

Полу-простое число - это число, которое является произведением двух простых чисел.Таким образом, алгоритм прост:

  1. Найдите один делитель числа, назовите его d1.
  2. Разделите число на d1, чтобы получить второй делитель, d2.
  3. Проверьте, являются ли оба значения d1 и d2 простыми.Если это так, то исходное число является полупростым.

Код:

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 из isPrime Function для языка Python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...