Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
26
Task/Semiprime/Prolog/semiprime.pro
Normal file
26
Task/Semiprime/Prolog/semiprime.pro
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
factors(N, FList):-
|
||||
factors(N, 2, 0, FList).
|
||||
|
||||
factors(1, _, _Count, []).
|
||||
factors(_, _, Count, []):- Count > 1. % break on 2 factors reached
|
||||
factors(N, Start, Count, [Fac|FList]):-
|
||||
N1 is floor(sqrt(N)),
|
||||
between(Start, N1, Fac),
|
||||
N mod Fac =:= 0,!,
|
||||
N2 is N div Fac,
|
||||
Count1 is Count + 1,
|
||||
factors(N2, Fac, Count1, FList).
|
||||
factors(N, _, _, [N]):- N >= 2.
|
||||
|
||||
semiPrimeList(Limit, List):-
|
||||
findall(N, semiPrimes(2, Limit, N), List).
|
||||
|
||||
semiPrimes(Start, Limit, N):-
|
||||
between(Start, Limit, N),
|
||||
factors(N, [F1, F2]),
|
||||
N =:= F1 * F2. % correct factors break
|
||||
|
||||
do:- semiPrimeList(100, SemiPrimes),
|
||||
writeln(SemiPrimes),
|
||||
findall(N, semiPrimes(1675, 1685, N), SemiPrimes2),
|
||||
writeln(SemiPrimes2).
|
||||
Loading…
Add table
Add a link
Reference in a new issue