Giuga numbers: Difference between revisions
Content added Content deleted
(Add PARI/GP implementation) |
(Added ABC) |
||
Line 63: | Line 63: | ||
1722 |
1722 |
||
66198 |
66198 |
||
</pre> |
|||
=={{header|ABC}}== |
|||
Based on the Algol 68 sample, |
|||
<syntaxhighlight lang="abc"> |
|||
HOW TO REPORT is.giuga n: |
|||
\ each prime factor must appear only once, e.g.: for 2: |
|||
\ [ ( n / 2 ) - 1 ] mod 2 = 0 => n / 2 is odd => n isn't divisible by 4 |
|||
\ similarly for other primes |
|||
PUT 1, 3, 1, floor( n / 2 ) IN f.count, f, giuga, v |
|||
WHILE f <= v AND giuga = 1: |
|||
IF v mod f = 0: |
|||
PUT f.count + 1 IN f.count |
|||
IF ( ( floor( n / f ) ) - 1 ) mod f <> 0: PUT 0 IN giuga |
|||
PUT floor( v / f ) IN v |
|||
PUT f + 2 IN f |
|||
IF giuga = 1: \ n is still a candidate, check it is not prime |
|||
IF f.count = 1: FAIL \ only 1 factor - it is prime so not giuga |
|||
REPORT giuga = 1 |
|||
PUT 0, -2 IN g.count, n |
|||
WHILE g.count < 4: |
|||
PUT n + 4 IN n \ assume the numbers are all even |
|||
IF is.giuga n: |
|||
PUT g.count + 1 IN g.count |
|||
WRITE n |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
30 858 1722 66198 |
|||
</pre> |
</pre> |
||