Pairs with common factors: Difference between revisions

RPL: add section
(RPL: add section)
Line 403:
One hundred thousandth term: 1,960,299,247
One millionth term: 196,035,947,609</pre>
=={{header|RPL}}==
The <code>PHI</code> function comes from the totient function task.
To save time, Σφ(j) are stored in a global variable named <code>ΣPHI</code>, which must be initialized at <code>{ 1 }</code> once.
{{works with|Halcyon Calc|4.2.8}}
{| class="wikitable"
! RPL code
! Comment
|-
|
DUP 2 OVER √ '''FOR''' j
'''IF''' DUP j MOD NOT '''THEN'''
'''WHILE''' DUP j MOD NOT '''REPEAT''' j / '''END'''
SWAP DUP j / - SWAP
'''END'''
'''IF''' j 2 == '''THEN''' 1 'j' STO '''END'''
2 '''STEP'''
'''IF''' DUP 1 > '''THEN''' OVER SWAP / - '''ELSE''' DROP '''END'''
≫ ‘'''PHI'''’ STO
≪ '''∑PHI''' SIZE
'''IF''' DUP2 ≤ '''THEN''' DROP
'''ELSE'''
''''∑PHI'''' OVER GET SWAP 1 + '''∑PHI''' SWAP 4 ROLL '''FOR''' j
SWAP j '''PHI''' + SWAP OVER + NEXT
''''∑PHI'''' STO DROP '''∑PHI''' SIZE '''END'''
''''∑PHI'''' SWAP GET
≫ ''''→∑PHI'''' STO
≪ DUP DUP 1 - * 2 / 1 + SWAP '''→∑PHI''' - ≫ ‘'''A185670'''’ STO
|
'''PHI''' ''( n -- φ(n) )''
Translation of C version
'''→∑PHI''' ''( n -- φ(n) )''
if n...
...is not already in ∑PHI
initialize stack and loop, for size(∑PHI)+1 to n
sum += φ(n), append sum to list
store list into ∑PHI
read ∑PHI[n]
'''A185670''' ''( n -- n*(n-1)/2 + 1 - Σφ(j) )''
|}
{{in}}
<pre>
≪ { } 1 100 FOR j j A185670 + NEXT ≫ EVAL
1000 A185670
</pre>
{{out}}
<pre>
2: { 0 0 0 1 1 4 4 7 9 14 14 21 21 28 34 41 41 52 52 63 71 82 82 97 101 114 122 137 137 158 158 173 185 202 212 235 235 254 268 291 291 320 320 343 363 386 386 417 423 452 470 497 497 532 546 577 597 626 626 669 669 700 726 757 773 818 818 853 877 922 922 969 969 1006 1040 1079 1095 1148 1148 1195 1221 1262 1262 1321 1341 1384 1414 1461 1461 1526 1544 1591 1623 1670 1692 1755 1755 1810 1848 1907 }
1: 195309
</pre>
 
=={{header|Ruby}}==
<syntaxhighlight lang="ruby" line>require "prime"
1,151

edits