Главная страница
Навигация по странице:

  • Тест простоты. (алгоритм простоты) Самый простой алгоритм a = int(input("Введите число: "))k = 0for i in

  • Более компактное решение

  • Вывод всех простых чисел до N

  • У рок 3.7

  • практикумы по языку Питон. Питон. Практикум Загидуллин Наиль Рашитович мбоу сош 2 Оглавление Введение в Питон 4 Команда вывода 4


    Скачать 7.93 Mb.
    НазваниеПрактикум Загидуллин Наиль Рашитович мбоу сош 2 Оглавление Введение в Питон 4 Команда вывода 4
    Анкорпрактикумы по языку Питон
    Дата07.11.2022
    Размер7.93 Mb.
    Формат файлаdocx
    Имя файлаПитон.docx
    ТипПрактикум
    #774704
    страница8 из 11
    1   2   3   4   5   6   7   8   9   10   11

    Простые числа



    Урок 3.6

    Простое число — натуральное число, имеющее ровно два различных натуральных делителя. Другими словами, натуральное число p является простым, если оно отлично от 1 и делится без остатка только на 1 и на само p

    Теорема Евклида (Основная теорема арифметики)

    Каждое целое число можно представить единственным образом в виде произведения простых чисел (факторизация).





    Тест простоты. (алгоритм простоты)

    Самый простой алгоритм

    a = int(input("Введите число: "))

    k = 0

    for i in range(2, a):

    if (a % i == 0):

    k = k+1

    if (k <= 0):

    print("Число простое")

    else:

    print("Число не является простым")

    Чтобы сократить число переборов, достаточно проверить делители из промежутка 2..n//2+1 (или более точно 2.. n**(0.5))



    for i in range(2, a//2+1):






    Для ускорения перебора часто не проверяются чётные делители, кроме числа 2, а также делители, кратные трём, кроме числа 3. При этом тест ускоряется в три раза, так как из каждых шести последовательных потенциальных делителей необходимо проверить только два, а именно вида 6·k±1, где k — натуральное число.
    def isprime(n):

    if n <= 1: return False

    elif n == 2: return True

    else:

    for i in range(3, n//2+1,2):

    if n%i == 0:

    return False

    break

    else:

    return True

    print(isprime(12))
    Более компактное решение:

    num = int(input())

    res = [i for i in range(2, num//2+1) if num % i == 0]

    print('yes' if len(res) == 0 else 'no')



    Факторизация числа

    import math

    number=int(input())

    for i in range(2, int(math.sqrt(number)) + 1):

    while (number % i == 0):

    print(i, end=' ')

    number //= i # убираем множитель из числа

    if (number != 1): # но один делитель может быть больше корня

    print (number)


    Вывод всех простых чисел до N

    n = int(input())

    # создаем пустой список для хранения простых чисел

    lst = []

    # в k будем хранить количество делителей

    k = 0

    # пробегаем все числа от 2 до N

    for i in range(2, n+1):

    # пробегаем все числа от 2 до текущего

    for j in range(2, i):

    # ищем количество делителей

    if i % j == 0:

    k = k + 1

    # если делителей нет, добавляем число в список

    if k == 0:

    lst.append(i)

    else:

    k = 0

    # выводим на экран список

    print lst




    Задание:

    1. Проверьте число 1484631 на простоту

    2. Выполните фактроизацию числа 9973

    3. Выведите все простые числа от 1000 до 2000


    У рок 3.7


    Решите задачу «Горошины»

    Из трех горошин нельзя построить прямоугольник, а из 4 можно. Из 5 снова нет, из 6 да.

    Напишите первые 100 чисел из которых нельзя построить прямоугольник.

    Решение.

    Нужно вывести первые 100 простых чисел

    Вместо for i in range(3, n+1, 2) используем цикл

    i = 3

    while count < 100:

    i+=2



    count +=1 #если найдено простое число






    Урок 3.8



    Задание

    1)Проверьте является ли число а)23921 б) 8128 совершенным?

    2)Найдите максимальное число из диапазона от 1000 до 5000, который имеет ровно три нетривиальных делителя.
    1   2   3   4   5   6   7   8   9   10   11


    написать администратору сайта