Нахождение ближайшего простого - PullRequest
0 голосов
/ 06 ноября 2019

Мне нужно распечатать ближайшее число к введенному числу. Код работает для введенных простых чисел, но не для простых чисел. См. Ниже Я относительно новый кодер, и я новичок в Python

входное значение равно 16 Ожидаемый результат - Ближайшее простое число к 16 - 17 Фактический результат - Ближайшее простое число к 16 - 18

x = int(input("Enter a number: "))
y = x-1
z = x+1
counter = 0
valid = True
while valid == True:
    for i in range (2,x):
        if x%i == 0:
            counter += 1
    if counter <= 1:
        print("The closest prime to ",x," is ",x)
        valid = False
    counter = 0
    for i in range (2,y):
        if y%i == 0:
            counter += 1
    if counter <= 1:
        print("The closest prime to ",x," is ",y)
        valid = False
    counter = 0
    y -= 1
    for i in range (2,z):
        if y%i == 0:
            counter += 1
    if counter <= 1:
        print("The closest prime to ",x," is ",z)
        valid = False
    counter = 0
    z += 1

1 Ответ

0 голосов
/ 07 ноября 2019

Пожалуйста, попробуйте это, это печать ближайшего простого числа для чисел от 1 до 100. Вы можете попробовать эту функцию со случайными значениями.

def is_prime(n):
    if n == 1:
        return True
    if n == 2:
        return True
    for i in range(2, int(n/2) + 1):
        if n % i != 0:
            continue
        else:
            return False
    return True

def get_nearest_prime(n):
    if is_prime(n):
        return n
    for i in range(1, n*n):
        if is_prime(n+i):
            return n+i
        if is_prime(n-i):
            return n-i

if __name__ == "__main__":
    for i in range(1, 100):
        print('%s: %s' % (i, get_nearest_prime(i)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...