def prime(num): if num <= 1: return False for div in range(2, num // 2 + 1): if num % div == 0: return False return True
def nth_superprime(n): if n < 1: return None else: c = 0 for x in count(2): digits = [int(l) for l in str(x)] if all(map(prime, digits)): c += 1 print(c, '=', x) if c == n: return x
Var i,k,n,p:longint; f:array[1..10,1..2] of longint; begin p:=2; i:=1; f[1,1]:=1; f[1,2]:=1; Write('Введите натуральное число не больше 2 147 483 647: '); Read(n); Write(n,' = 1'); while n<>1 do begin if (n mod p)=0 then begin if f[i,1]<>p then begin Inc(i); f[i,1]:=p; f[i,2]:=1 end else Inc(f[i,2]); n:=n div p end else inc(p) end; k:=i; for i:=2 to k do begin Write(' x ',f[i,1]); if f[i,2]>1 then Write('^',f[i,2]) end; Writeln end.
Тестовое решение: Введите натуральное число не больше 2 147 483 647: 223092870 223092870 = 1 x 2 x 3 x 5 x 7 x 11 x 13 x 17 x 19 x 23
Введите натуральное число не больше 2 147 483 647: 65536 65536 = 1 x 2^16
Введите натуральное число не больше 2 147 483 647: 2147483647 2147483647 = 1 x 2147483647
from itertools import count
def prime(num):
if num <= 1:
return False
for div in range(2, num // 2 + 1):
if num % div == 0:
return False
return True
def nth_superprime(n):
if n < 1:
return None
else:
c = 0
for x in count(2):
digits = [int(l) for l in str(x)]
if all(map(prime, digits)):
c += 1
print(c, '=', x)
if c == n:
return x
print(nth_superprime(101))
# Вывод (и ответ): 2322
i,k,n,p:longint;
f:array[1..10,1..2] of longint;
begin
p:=2; i:=1;
f[1,1]:=1; f[1,2]:=1;
Write('Введите натуральное число не больше 2 147 483 647: ');
Read(n);
Write(n,' = 1');
while n<>1 do begin
if (n mod p)=0 then begin
if f[i,1]<>p then
begin Inc(i); f[i,1]:=p; f[i,2]:=1 end
else Inc(f[i,2]);
n:=n div p
end
else inc(p)
end;
k:=i;
for i:=2 to k do
begin
Write(' x ',f[i,1]);
if f[i,2]>1 then Write('^',f[i,2])
end;
Writeln
end.
Тестовое решение:
Введите натуральное число не больше 2 147 483 647: 223092870
223092870 = 1 x 2 x 3 x 5 x 7 x 11 x 13 x 17 x 19 x 23
Введите натуральное число не больше 2 147 483 647: 65536
65536 = 1 x 2^16
Введите натуральное число не больше 2 147 483 647: 2147483647
2147483647 = 1 x 2147483647