Как читать файл простых чисел с помощью Python; преобразование в список - PullRequest
0 голосов
/ 02 апреля 2020

Я бы хотел прочитать оттуда файлы простых чисел https://primes.utm.edu/lists/small/millions/ и перенести их в список.

Пример файла ниже: - пропустить первые 4 строки - прочитать 8 целых чисел и поставить их в список - пропустите следующую строку - прочитайте 8 целых чисел и добавьте их в предыдущий созданный список .. - пропустите следующую строку - прочитайте 8 целых чисел и добавьте их в предыдущий созданный список .. пока не будет достигнут конец файла. Любые предложения и помощь приветствуются.

Почему? Я хочу проверить, какое простое число является n-ным (пример «13» является 6-м из созданного списка): это, скорее всего, быстрее, чем непрерывное использование функции primepi оттуда https://docs.sympy.org/latest/modules/ntheory.html#sympy .ntheory.generate.primepi (primepi (13) вернет 6)

типичный файл:

             The First 1,000,000 Primes (from primes.utm.edu).. this is the first lineof the file



     2         3         5         7        11        13        17        19 

    23        29        31        37        41        43        47        53 

    59        61        67        71        73        79        83        89 

    97       101       103       107       109       113       127       131 

   137       139       149       151       157       163       167       173 

   179       181       191       193       197       199       211       223 

Обновление: код после поддержки здесь

def prime_pi(prime,prime_list):
    return 1+prime_list.index(prime)
    #
if __name__=="__main__":
    #
    with open("/home/family/Downloads/primes1_short.txt", "r") as f:
        primelistfile = f.read()
    primeintegerlist = primelistfile[primelistfile.index("\n"):]
    primeintegerlist = primeintegerlist.replace("\n", " ")
    primeintegerlist = primeintegerlist.split(" ")
    primeintegerlist = list(set(primeintegerlist))  # Eliminate duplicates
    primeintegerlist.remove("")  # Eliminate last empty string
    primeintegerlist = sorted(map(int, primeintegerlist))
    print(primeintegerlist)
    print('29 is the', (primeintegerlist.index(29))+1,'th prime')
    prime_example = 29
    print(prime_pi(prime_example,primeintegerlist))
    #

1 Ответ

1 голос
/ 02 апреля 2020

Первое, что вам нужно сделать, это открыть файл

with open("primes1.txt", "r") as f:
  primelist = f.read()

удалить первую строку

p = primelist[primelist.index("\n"):]

Удалить скачок строки и заменить их пробелами

p = p.replace("\n", " ")

Используйте метод split, чтобы преобразовать вашу строку в список строк

p = p.split(" ")

Удалить пустую строку, вызванную двумя последовательными пробелами в исходном файле

p = list(set(p)) # Eliminate duplicates
p.remove("") # Eliminate last empty string

упорядочить их

p = sorted(map(int,p))
...