Idoneal numbers: Difference between revisions
Content added Content deleted
m (→{{header|Free Pascal}}: checked 2 versions, {$CODEALIGN loop=1} speeds up 50% isIdoneal(n.. )) |
(Idoneal numbers in FreeBASIC) |
||
Line 57: | Line 57: | ||
312 330 345 357 385 408 462 520 760 840 1320 1365 1848 |
312 330 345 357 385 408 462 520 760 840 1320 1365 1848 |
||
Calculations took 28.5862 ms</pre> |
Calculations took 28.5862 ms</pre> |
||
=={{header|FreeBASIC}}== |
|||
{{trans|Wren}} - original version |
|||
{{trans|Pascal}} - version with minimized multiplications |
|||
<syntaxhighlight lang="freebasic">Function isIdonealOrg(n As Uinteger) As Boolean |
|||
Dim As Uinteger a, b, c, sum |
|||
For a = 1 To n |
|||
For b = a+1 To n |
|||
If (a*b + a + b > n) Then Exit For |
|||
For c = b+1 To n |
|||
sum = a*b + b*c + a*c |
|||
If sum = n Then Return false |
|||
If sum > n Then Exit For |
|||
Next c |
|||
Next b |
|||
Next a |
|||
Return true |
|||
End Function |
|||
Function isIdoneal(n As Uinteger) As Boolean |
|||
Dim As Uinteger a, b, c, axb, ab, sum |
|||
For a = 1 To n |
|||
ab = a+a |
|||
axb = a*a |
|||
For b = a+1 To n |
|||
axb += a |
|||
ab +=1 |
|||
sum = axb + b*ab |
|||
If (sum > n) Then Exit For |
|||
For c = b+1 To n |
|||
sum += ab |
|||
If (sum = n) Then Return false |
|||
If (sum > n) Then Exit For |
|||
Next c |
|||
Next b |
|||
Next a |
|||
Return true |
|||
End Function |
|||
Dim As Double t0 = Timer |
|||
Dim r As Byte = 0 |
|||
Print "The 65 known Idoneal numbers:" |
|||
For n As Uinteger = 1 To 1850 |
|||
If isIdonealOrg(n) Then |
|||
Print Using "#####"; n; |
|||
r += 1 |
|||
If r Mod 13 = 0 Then Print |
|||
End If |
|||
Next n |
|||
Print !"\nTime:"; (Timer - t0); Chr(10) |
|||
Dim As Double t1 = Timer |
|||
For n As Uinteger = 1 To 1850 |
|||
If isIdoneal(n) Then |
|||
Print Using "#####"; n; |
|||
r += 1 |
|||
If r Mod 13 = 0 Then Print |
|||
End If |
|||
Next n |
|||
Print !"\n\nTime:"; (Timer - t1) |
|||
Sleep</syntaxhighlight> |
|||
{{out}} |
|||
<pre>'Tested in jdoodle.com |
|||
The 65 known Idoneal numbers: |
|||
1 2 3 4 5 6 7 8 9 10 12 13 15 |
|||
16 18 21 22 24 25 28 30 33 37 40 42 45 |
|||
48 57 58 60 70 72 78 85 88 93 102 105 112 |
|||
120 130 133 165 168 177 190 210 232 240 253 273 280 |
|||
312 330 345 357 385 408 462 520 760 840 1320 1365 1848 |
|||
0.5490732192993164 ms per run |
|||
1 2 3 4 5 6 7 8 9 10 12 13 15 |
|||
16 18 21 22 24 25 28 30 33 37 40 42 45 |
|||
48 57 58 60 70 72 78 85 88 93 102 105 112 |
|||
120 130 133 165 168 177 190 210 232 240 253 273 280 |
|||
312 330 345 357 385 408 462 520 760 840 1320 1365 1848 |
|||
0.3645658493041992 ms per run</pre> |
|||
=={{header|J}}== |
=={{header|J}}== |