Quadrat special primes: Difference between revisions

m
(Initial FutureBasic task solution added)
m (→‎{{header|Wren}}: Minor tidy)
(4 intermediate revisions by 4 users not shown)
Line 362:
loop
end</syntaxhighlight>
 
=={{header|Delphi}}==
{{works with|Delphi|6.0}}
{{libheader|SysUtils,StdCtrls}}
<syntaxhighlight lang="Delphi">
function IsPrime(N: int64): boolean;
{Fast, optimised prime test}
var I,Stop: int64;
begin
if (N = 2) or (N=3) then Result:=true
else if (n <= 1) or ((n mod 2) = 0) or ((n mod 3) = 0) then Result:= false
else
begin
I:=5;
Stop:=Trunc(sqrt(N+0.0));
Result:=False;
while I<=Stop do
begin
if ((N mod I) = 0) or ((N mod (I + 2)) = 0) then exit;
Inc(I,6);
end;
Result:=True;
end;
end;
 
 
 
procedure QuadratSpecialPrimes(Memo: TMemo);
var Q,P,Cnt: integer;
var IA: TIntegerDynArray;
begin
Memo.Lines.Add('Count Prime1 Prime2 Gap Sqrt');
Memo.Lines.Add('---------------------------------');
Cnt:=0;
Q:=2;
for P:=3 to 16000-1 do
if IsPrime(P) then
begin
if frac(sqrt(P - Q))=0 then
begin
Inc(Cnt);
Memo.Lines.Add(Format('%5D%7D%8D%7D%6.1f',[Cnt,Q,P,P-Q,Sqrt(P-Q)]));
Q:=P;
end;
end;
Memo.Lines.Add('Count = '+IntToStr(Cnt));
end;
 
 
</syntaxhighlight>
{{out}}
<pre>
Count Prime1 Prime2 Gap Sqrt
---------------------------------
1 2 3 1 1.0
2 3 7 4 2.0
3 7 11 4 2.0
4 11 47 36 6.0
5 47 83 36 6.0
6 83 227 144 12.0
7 227 263 36 6.0
8 263 587 324 18.0
9 587 911 324 18.0
10 911 947 36 6.0
11 947 983 36 6.0
12 983 1019 36 6.0
13 1019 1163 144 12.0
14 1163 1307 144 12.0
15 1307 1451 144 12.0
16 1451 1487 36 6.0
17 1487 1523 36 6.0
18 1523 1559 36 6.0
19 1559 2459 900 30.0
20 2459 3359 900 30.0
21 3359 4259 900 30.0
22 4259 4583 324 18.0
23 4583 5483 900 30.0
24 5483 5519 36 6.0
25 5519 5843 324 18.0
26 5843 5879 36 6.0
27 5879 6203 324 18.0
28 6203 6779 576 24.0
29 6779 7103 324 18.0
30 7103 7247 144 12.0
31 7247 7283 36 6.0
32 7283 7607 324 18.0
33 7607 7643 36 6.0
34 7643 8219 576 24.0
35 8219 8363 144 12.0
36 8363 10667 2304 48.0
37 10667 11243 576 24.0
38 11243 11279 36 6.0
39 11279 11423 144 12.0
40 11423 12323 900 30.0
41 12323 12647 324 18.0
42 12647 12791 144 12.0
43 12791 13367 576 24.0
44 13367 13691 324 18.0
45 13691 14591 900 30.0
46 14591 14627 36 6.0
47 14627 14771 144 12.0
48 14771 15671 900 30.0
Count = 48
Elapsed Time: 111.233 ms.
</pre>
 
 
=={{header|F_Sharp|F#}}==
Line 436 ⟶ 542:
if p > 16000 then exit while
printf @"%6lu \b", p
if count == 107 then count = 0 : print
j = 1
wend
Line 448 ⟶ 554:
{{output}}
<pre>
2 3 7 11 47 83 227 263 587 911
947263 983587 1019 911 1163 947 1307 1451983 14871019 1523 1559 24591163
33591307 42591451 45831487 54831523 55191559 58432459 5879 6203 6779 71033359
72474259 72834583 76075483 76435519 82195843 83635879 10667 11243 11279 114236203
12323 126476779 12791 7103 13367 136917247 14591 7283 14627 147717607 15671 7643 8219
8363 10667 11243 11279 11423 12323 12647
12791 13367 13691 14591 14627 14771 15671
</pre>
 
Line 703 ⟶ 811:
8363 10667 11243 11279 11423 12323 12647
12791 13367 13691 14591 14627 14771 15671</pre>
 
=={{header|Maxima}}==
<syntaxhighlight lang="maxima">
quadrat(n):=block(aux:next_prime(n),while not integerp(sqrt(aux-n)) do aux:next_prime(aux),aux)$
block(a:2,append([a],makelist(a:quadrat(a),48)));
</syntaxhighlight>
{{out}}
<pre>
[2,3,7,11,47,83,227,263,587,911,947,983,1019,1163,1307,1451,1487,1523,1559,2459,3359,4259,4583,5483,5519,5843,5879,6203,6779,7103,7247,7283,7607,7643,8219,8363,10667,11243,11279,11423,12323,12647,12791,13367,13691,14591,14627,14771,15671]
</pre>
 
=={{header|Nim}}==
Line 1,128 ⟶ 1,246:
 
done...</pre>
 
=={{header|RPL}}==
{{works with|HP|49}}
≪ <span style="color:red">{ 2 } 2</span> DUP
'''DO'''
DUP NEXTPRIME
'''IF''' DUP2 SWAP - √ FP NOT '''THEN''' NIP SWAP OVER + SWAP DUP '''END'''
'''UNTIL''' DUP <span style="color:red">16000</span> ≥ '''END'''
DROP2
≫ '<span style="color:blue">TASK</span>' STO
{{out}}
<pre>
1: {2 3 7 11 47 83 227 263 587 911 947 983 1019 1163 1307 1451 1487 1523 1559 2459 3359 4259 4583 5483 5519 5843 5879 6203 6779 7103 7247 7283 7607 7643 8219 8363 10667 11243 11279 11423 12323 12647 12791 13367 13691 14591 14627 14771 15671}
</pre>
Runs in 6 minutes 25 seconds on a HP-50g.
 
=={{header|Ruby}}==
Line 1,143 ⟶ 1,276:
<pre>2 3 7 11 47 83 227 263 587 911 947 983 1019 1163 1307 1451 1487 1523 1559 2459 3359 4259 4583 5483 5519 5843 5879 6203 6779 7103 7247 7283 7607 7643 8219 8363 10667 11243 11279 11423 12323 12647 12791 13367 13691 14591 14627 14771 15671
</pre>
 
=={{header|Sidef}}==
<syntaxhighlight lang="ruby">func quadrat_primes(callback) {
Line 1,170 ⟶ 1,304:
{{libheader|Wren-math}}
{{libheader|Wren-fmt}}
<syntaxhighlight lang="ecmascriptwren">import "./math" for Int
import "./fmt" for Fmt
 
var isSquare = Fn.new { |n|
9,482

edits