Member 14118484 Ответов: 1

В чем заключается ошибка в этом коде?


def prime(n):
    """Finds the nth prime number as a result of user input"""
    index_list = []
    primes_list = []
    for i in range(1, (n + 1)):
        index_list.append(i)
    for p in range(2, (n + 1)):
        if (n % p == 0):
            primes_list.append(p)

    return primes_list

def main():
    value = int(input("Enter a positional value to find the corresponding prime:"))
    print(prime(value))



Список индексов - это просто список значений индекса, так что я могу получить доступ к N-му простому числу.

Что я уже пробовал:

В настоящее время я просто хочу иметь возможность распечатать primes_list, но он продолжает возвращать n.

ZurdoDev

Отладьте свой код и посмотрите, что происходит.

1 Ответов

Рейтинг:
1

CPallini

Ваш код не пытается найти простые числа: в нем отсутствует тест на примитивность и тому подобное.
Попробуй

import math

def is_prime(primes_list, n): # primality test
  limit = math.ceil(math.sqrt(n))
  i = 0
  while  primes_list[i] <= limit:
    if  n % primes_list[i] == 0:
      return False
    i += 1
  return True

def primes(n): # returs the list of the first n primes
  primes_list =[2,3,5] # pre-charge 'primes_list' with enough items to make 'is_prime' work

  # test corner cases
  if n < 0:
    return []
  if n < 4:
    return primes_list[0 : n]

  c = 7
  while len(primes_list) < n:
    if is_prime(primes_list, c):
      primes_list.append(c)
    c += 2
  return primes_list


pl = primes(100)
index = int(input("Enter a positional value to find the corresponding prime:"))
if index < 100:
  print(pl[index])


Maciej Los

5ed!