Задача к ЕГЭ по информатике на тему «делители числа» №19

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [123123;321321]  , числа, имеющие ровно 3  различных натуральных делителя не считая единицы и самого числа. Выведите количество таких чисел.

Решение 1

def countDelitel(n):
    count = 0
    for j in range(2, int(n ** 0.5) + 1):
        if n % j == 0:
            count += 2
          if j == n // j:
              count -= 1
        if count > 3:
            return False
    if count == 3:
        return True
    return False

k = 0
for i in range(123123, 321322):
    if countDelitel(i):
        k += 1
print(k)

 

Решение 2

def prime(n):
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True

ans = 0
for i in range(123123,321322):
    if int(i ** 0.25) == i ** 0.25 and prime(i ** 0.25):
        ans += 1
print(ans)

Ответ: 2
Оцените статью
Я решу все!