First 9 prime Fibonacci number: Difference between revisions
m (julia example) |
(→{{header|Phix}}: use primes, show fib(n), extended range) |
||
Line 87:
<span style="color: #004080;">integer</span> <span style="color: #000000;">n</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">count</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span>
<span style="color: #004080;">mpz</span> <span style="color: #000000;">f</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">mpz_init</span><span style="color: #0000FF;">()</span>
<span style="color: #
<span style="color: #008080;">while</span> <span style="color: #000000;">count</span><span style="color: #0000FF;"><</span><span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">
<span style="color: #004080;">integer</span> <span style="color: #000000;">fn</span> <span style="color: #0000FF;">=</span> <span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;"><</span><span style="color: #000000;">4</span><span style="color: #0000FF;">?</span><span style="color: #000000;">n</span><span style="color: #0000FF;">+</span><span style="color: #000000;">2</span><span style="color: #0000FF;">:</span><span style="color: #7060A8;">get_prime</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">))</span>
<span style="color: #7060A8;">mpz_fib_ui</span><span style="color: #0000FF;">(</span><span style="color: #000000;">f</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">fn</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">mpz_prime</span><span style="color: #0000FF;">(</span><span style="color: #000000;">f</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">count</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
<span style="color: #
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%2d: fib(%d) = %s (%s)\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">count</span><span style="color: #0000FF;">,</span><span style="color: #000000;">fn</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">shorten</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">mpz_get_str</span><span style="color: #0000FF;">(</span><span style="color: #000000;">f</span><span style="color: #0000FF;">)),</span><span style="color: #000000;">e</span><span style="color: #0000FF;">})</span>
<span style="color: #008080;">elsif</span> <span style="color: #7060A8;">platform</span><span style="color: #0000FF;">()!=</span><span style="color: #004600;">JS</span> <span style="color: #008080;">and</span> <span style="color: #7060A8;">time</span><span style="color: #0000FF;">()></span><span style="color: #000000;">t1</span> <span style="color: #008080;">then</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%d\r"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">fn</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">t1</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">time</span><span style="color: #0000FF;">()+</span><span style="color: #000000;">1</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #000000;">n</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
Line 98 ⟶ 104:
{{out}}
<pre>
1: fib(3) = 2 (0s)
2: fib(4) = 3 (0.1s)
3: fib(5) = 5 (0.2s)
4: fib(7) = 13 (0.2s)
5: fib(11) = 89 (0.2s)
6: fib(13) = 233 (0.2s)
7: fib(17) = 1597 (0.2s)
8: fib(23) = 28657 (0.2s)
9: fib(29) = 514229 (0.2s)
10: fib(43) = 433494437 (0.2s)
11: fib(47) = 2971215073 (0.2s)
12: fib(83) = 99194853094755497 (0.2s)
13: fib(131) = 1066340417491710595814572169 (0.2s)
14: fib(137) = 19134702400093278081449423917 (0.2s)
15: fib(359) = 47542043773469822074...62268716376935476241 (75 digits) (0.2s)
16: fib(431) = 52989271100609562179...55134424689676262369 (90 digits) (0.2s)
17: fib(433) = 13872771278047838271...25954602593712568353 (91 digits) (0.2s)
18: fib(449) = 30617199924845450305...49015933442805665949 (94 digits) (0.2s)
19: fib(509) = 10597999265301490732...54396195769876129909 (107 digits) (0.2s)
20: fib(569) = 36684474316080978061...15228143777781065869 (119 digits) (0.2s)
21: fib(571) = 96041200618922553823...31637646183008074629 (119 digits) (0.2s)
22: fib(2971) = 35710356064190986072...48642001438470316229 (621 digits) (2.8s)
23: fib(4723) = 50019563612695729290...02854387700053591957 (987 digits) (14.0s)
24: fib(5387) = 29304412869392580554...82040327194725855833 (1,126 digits) (22.4s)
25: fib(9311) = 34232086066590238613...37580645424669476289 (1,946 digits) (2 minutes and 38s)
26: fib(9677) = 10565977873308861656...95169792504550670357 (2,023 digits) (3 minutes and 3s)
</pre>
|
Revision as of 19:45, 20 January 2022
- Task
Show on this page the first 9 prime Fibonacci number.
C
Requires C99 or later. <lang c>#include <stdio.h>
- include <stdint.h>
- include <stdbool.h>
bool isPrime(uint64_t n) {
if (n < 2) return false; if (!(n%2)) return n == 2; if (!(n%3)) return n == 3; uint64_t d = 5; while (d*d <= n) { if (!(n%d)) return false; d += 2; if (!(n%d)) return false; d += 4; } return true;
}
int main() {
uint64_t f1 = 1, f2 = 1, f3; int count = 0, limit = 12; // as far as we can get without using GMP printf("The first %d prime Fibonacci numbers are:\n", limit); while (count < limit) { f3 = f1 + f2; if (isPrime(f3)) { printf("%ld ", f3); count++; } f1 = f2; f2 = f3; } printf("\n"); return 0;
}</lang>
- Output:
The first 12 prime Fibonacci numbers are: 2 3 5 13 89 233 1597 28657 514229 433494437 2971215073 99194853094755497
Julia
<lang julia>using Lazy using Primes
fibs = @lazy big"0":big"1":(fibs + drop(1, fibs))
primefibs = @>> fibs filter(isprime)
println(take(9, primefibs)) # List: (2 3 5 13 89 233 1597 28657 514229) </lang>
Perl
<lang perl>#!/usr/bin/perl
use strict; # https://rosettacode.org/wiki/First_9_Prime_Fibonacci_Number use warnings; use ntheory qw( is_prime );
my @first; my $x = my $y = 1; while( @first < 9 )
{ ($x, $y) = ($x + $y, $x); is_prime( $x ) and push @first, $x; }
print "@first\n";</lang>
- Output:
2 3 5 13 89 233 1597 28657 514229
Phix
You can run this online here.
with javascript_semantics include mpfr.e integer n = 1, count=0 mpz f = mpz_init() atom t0 = time(), t1 = time()+1 while count<iff(platform()=JS?21:26) do integer fn = iff(n<4?n+2:get_prime(n)) mpz_fib_ui(f, fn) if mpz_prime(f) then count += 1 string e = elapsed(time()-t0) printf(1,"%2d: fib(%d) = %s (%s)\n",{count,fn,shorten(mpz_get_str(f)),e}) elsif platform()!=JS and time()>t1 then printf(1,"%d\r",fn) t1 = time()+1 end if n += 1 end while
- Output:
1: fib(3) = 2 (0s) 2: fib(4) = 3 (0.1s) 3: fib(5) = 5 (0.2s) 4: fib(7) = 13 (0.2s) 5: fib(11) = 89 (0.2s) 6: fib(13) = 233 (0.2s) 7: fib(17) = 1597 (0.2s) 8: fib(23) = 28657 (0.2s) 9: fib(29) = 514229 (0.2s) 10: fib(43) = 433494437 (0.2s) 11: fib(47) = 2971215073 (0.2s) 12: fib(83) = 99194853094755497 (0.2s) 13: fib(131) = 1066340417491710595814572169 (0.2s) 14: fib(137) = 19134702400093278081449423917 (0.2s) 15: fib(359) = 47542043773469822074...62268716376935476241 (75 digits) (0.2s) 16: fib(431) = 52989271100609562179...55134424689676262369 (90 digits) (0.2s) 17: fib(433) = 13872771278047838271...25954602593712568353 (91 digits) (0.2s) 18: fib(449) = 30617199924845450305...49015933442805665949 (94 digits) (0.2s) 19: fib(509) = 10597999265301490732...54396195769876129909 (107 digits) (0.2s) 20: fib(569) = 36684474316080978061...15228143777781065869 (119 digits) (0.2s) 21: fib(571) = 96041200618922553823...31637646183008074629 (119 digits) (0.2s) 22: fib(2971) = 35710356064190986072...48642001438470316229 (621 digits) (2.8s) 23: fib(4723) = 50019563612695729290...02854387700053591957 (987 digits) (14.0s) 24: fib(5387) = 29304412869392580554...82040327194725855833 (1,126 digits) (22.4s) 25: fib(9311) = 34232086066590238613...37580645424669476289 (1,946 digits) (2 minutes and 38s) 26: fib(9677) = 10565977873308861656...95169792504550670357 (2,023 digits) (3 minutes and 3s)
Python
<lang python> print("working...") print("The firsr 9 Prime Fibonacci numbers:")
num = 0
def isprime(m):
for i in range(2,int(m**0.5)+1): if m%i==0: return False return True
def fib(nr): if (nr == 0): return 0 if (nr == 1): return 1 if (nr > 1): return fib(nr-1) + fib(nr-2)
for n in range(2,520000): x = fib(n) if isprime(x): num = num + 1 if (x > 1): if (num < 11): print(str(x),end=" ") else: break
print() print("done...") </lang>
- Output:
working... The firsr 9 Prime Fibonacci numbers: 2 3 5 13 89 233 1597 28657 514229 done...
Raku
<lang perl6>put ++$ .fmt("%2d: ") ~ $_ for (0, 1, * + * … *).grep( &is-prime )[^20];</lang>
- Output:
1: 2 2: 3 3: 5 4: 13 5: 89 6: 233 7: 1597 8: 28657 9: 514229 10: 433494437 11: 2971215073 12: 99194853094755497 13: 1066340417491710595814572169 14: 19134702400093278081449423917 15: 475420437734698220747368027166749382927701417016557193662268716376935476241 16: 529892711006095621792039556787784670197112759029534506620905162834769955134424689676262369 17: 1387277127804783827114186103186246392258450358171783690079918032136025225954602593712568353 18: 3061719992484545030554313848083717208111285432353738497131674799321571238149015933442805665949 19: 10597999265301490732599643671505003412515860435409421932560009680142974347195483140293254396195769876129909 20: 36684474316080978061473613646275630451100586901195229815270242868417768061193560857904335017879540515228143777781065869
Ring
<lang ring> load "stdlibcore.ring" see "working..." + nl num = 0
see "The first 9 Prime Fibonacci numbers: " + nl for n = 1 to 1000000
x = fib(n) if isprime(x) num++ if num< 10 ? "" + x + " " else exit ok ok
next
see "done..." + nl
func fib nr
if nr = 0 return 0 ok if nr = 1 return 1 ok if nr > 1 return fib(nr-1) + fib(nr-2) ok
</lang>
- Output:
working... The first 9 Prime Fibonacci numbers: 2 3 5 13 89 233 1597 28657 514229 done...
Wren
<lang ecmascript>import "./math" for Int
var limit = 11 // as far as we can go without using BigInt System.print("The first %(limit) prime Fibonacci numbers are:") var count = 0 var f1 = 1 var f2 = 1 while (count < limit) {
var f3 = f1 + f2 if (Int.isPrime(f3)) { System.write("%(f3) ") count = count + 1 } f1 = f2 f2 = f3
} System.print()</lang>
- Output:
The first 11 prime Fibonacci numbers are: 2 3 5 13 89 233 1597 28657 514229 433494437 2971215073
XPL0
<lang XPL0>func IsPrime(N); \Return 'true' if N is prime int N, I; [if N <= 2 then return N = 2; if (N&1) = 0 then return false; for I:= 3 to sqrt(N) do
[if rem(N/I) = 0 then return false; I:= I+1; ];
return true; ];
int F, N, N0, C; [C:= 0; N:= 1; N0:= 1; loop [F:= N + N0;
if IsPrime(F) then [IntOut(0, F); ChOut(0, ^ ); C:= C+1; if C >= 9 then quit; ]; N0:= N; N:= F; ];
]</lang>
- Output:
2 3 5 13 89 233 1597 28657 514229