Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
75
Task/Ascending-primes/Pascal/ascending-primes.pas
Normal file
75
Task/Ascending-primes/Pascal/ascending-primes.pas
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
{$mode Delphi}
|
||||
|
||||
{ Note that for the program to work properly,
|
||||
integer variables must be at least 28-bit.
|
||||
Free Pascal Compiler uses 16-bit integers by default,
|
||||
so a directive like above is needed. }
|
||||
|
||||
program ascendingprimes(output);
|
||||
|
||||
const maxsize = 1000;
|
||||
|
||||
var
|
||||
queue, primes : array[1..maxsize] of integer;
|
||||
b, e, n, k, v : integer;
|
||||
|
||||
|
||||
function isprime(n: integer): boolean;
|
||||
|
||||
var
|
||||
ans : boolean;
|
||||
root, k : integer;
|
||||
begin
|
||||
if n = 2 then
|
||||
ans := true
|
||||
else if (n = 1) or (n mod 2 = 0) then
|
||||
ans := false
|
||||
else
|
||||
begin
|
||||
root := trunc(sqrt(n));
|
||||
ans := true;
|
||||
k := 3;
|
||||
while ans and (k <= root) do
|
||||
if n mod k = 0 then
|
||||
ans := false
|
||||
else
|
||||
k := k + 2;
|
||||
end;
|
||||
isprime := ans
|
||||
end;
|
||||
|
||||
begin
|
||||
|
||||
b := 1;
|
||||
e := 1;
|
||||
n := 0;
|
||||
|
||||
for k := 1 to 9 do
|
||||
begin
|
||||
queue[e] := k;
|
||||
e := e + 1
|
||||
end;
|
||||
|
||||
while b < e do
|
||||
begin
|
||||
v := queue[b];
|
||||
b := b + 1;
|
||||
if isprime(v) then
|
||||
begin
|
||||
n := n + 1;
|
||||
primes[n] := v
|
||||
end;
|
||||
|
||||
for k := v mod 10 + 1 to 9 do
|
||||
begin
|
||||
queue[e] := v * 10 + k;
|
||||
e := e + 1
|
||||
end
|
||||
|
||||
end;
|
||||
|
||||
for k := 1 to n do
|
||||
write(primes[k], ' ');
|
||||
writeln()
|
||||
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue