Prime reciprocal sum: Difference between revisions

Content added Content deleted
(Added C)
(→‎{{header|J}}: append Free Pascal)
Line 138: Line 138:
11390125639471674628..31060548964273180103 (2358 digits)
11390125639471674628..31060548964273180103 (2358 digits)
</syntaxhighlight>
</syntaxhighlight>

=={{header|Pascal}}==
==={{header|Free Pascal}}===
Most time consuming is finding the next prime.
<syntaxhighlight lang=pascal>
program primeRezSum;
{$IFDEF FPC} {$MODE DELPHI}{$Optimization ON,ALL} {$ENDIF}
{$IFDEF WINDOWS}{$APPTYPE CONSOLE}{$ENDIF}
uses
sysutils,
gmp;
procedure OutStr(const s: AnsiString);
var
myString : AnsiString;
l : Integer;
begin
myString := copy(s,1,length(s));
l :=length(pChar(@s[1]));
setlength(myString,l);
IF l< 41 then
writeln(myString)
else
begin
myString[20]:= #0;
myString[21]:= #0;
writeln(pChar(@myString[1]),'...',pChar(@myString[l-19]),' (',l:6,' digits)');
end;
end;

var
nominator,denominator,tmp,tmpDemP,p : mpz_t;
s : AnsiString;
cnt : NativeUint;
begin
setlength(s,10000);
cnt := 1;
mpz_init(nominator);
mpz_init(tmp);
mpz_init(tmpDemP);
mpz_init_set_ui(denominator,1);
mpz_init_set_ui(p,2);
repeat
mpz_sub_ui(p,p,1);
mpz_nextprime(p,p);
write(cnt:3,' ');
repeat
mpz_mul(tmp,nominator,p);
mpz_add(tmp,tmp,denominator);
mpz_mul(tmpDemP,denominator,p);
if mpz_cmp(tmp,tmpDemP)< 0 then
BREAK;
mpz_nextprime (p,p);
until false;
mpz_get_str(pChar(@s[1]),10, p);
OutStr(s);
mpz_set(nominator,tmp);
mpz_mul(denominator,denominator,p);

//next smallest possible number denominator/delta
mpz_sub(tmp,denominator,nominator);

mpz_fdiv_q(p,denominator,tmp);
inc(cnt);
until cnt> 14;
end.</syntaxhighlight>
{{out|@TIO.RUN}}
<pre>
1 2
2 3
3 7
4 43
5 1811
6 654149
7 27082315109
8 153694141992520880899
9 337110658273917297268061074384231117039
10 8424197597064114319...13803869133407474043 ( 76 digits)
11 2030075381384823476...91313959045797597991 ( 150 digits)
12 2032370538147127284...21649394434192763213 ( 297 digits)
13 1274824659267207819...20708715953110886963 ( 592 digits)
14 4674902516513883824...65355869250350888941 ( 1180 digits)
Real time: 1.147 s User time: 1.093 s Sys. time: 0.046 s CPU share: 99.28 %</pre>


=={{header|Julia}}==
=={{header|Julia}}==