Deceptive numbers: Difference between revisions
Content added Content deleted
m (→{{header|Wren}}: Minor tidy) |
(Added FreeBASIC) |
||
Line 485: | Line 485: | ||
if Isprime(n)>1 and Divides(n,Rep(n-1)) then !!n; c:+; fi |
if Isprime(n)>1 and Divides(n,Rep(n-1)) then !!n; c:+; fi |
||
od;</syntaxhighlight> |
od;</syntaxhighlight> |
||
=={{header|FreeBASIC}}== |
|||
{{trans|XPLo}} |
|||
<syntaxhighlight lang="vbnet">Function ModPow(b As Uinteger, e As Uinteger, m As Uinteger) As Uinteger |
|||
Dim As Uinteger p = 1 |
|||
While e <> 0 |
|||
If (e And 1) Then p = (p*b) Mod m |
|||
b = (b*b) Mod m |
|||
e Shr= 1 |
|||
Wend |
|||
Return p |
|||
End Function |
|||
Function isDeceptive(n As Uinteger) As Uinteger |
|||
Dim As Uinteger x |
|||
If (n And 1) <> 0 Andalso (n Mod 3) <> 0 Andalso (n Mod 5) <> 0 Then |
|||
x = 7 |
|||
While x*x <= n |
|||
If (n Mod x) = 0 Orelse (n Mod (x+4)) = 0 Then Return (ModPow(10, n-1, n) = 1) |
|||
x += 6 |
|||
Wend |
|||
End If |
|||
Return 0 |
|||
End Function |
|||
Dim As Uinteger c = 0, i = 49 |
|||
While c <> 41 ' limit for signed 32-bit integers |
|||
If isDeceptive(i) Then |
|||
Print Using "#######"; Csng(i); |
|||
c += 1 |
|||
If (c Mod 10) = 0 Then Print |
|||
End If |
|||
i += 1 |
|||
Wend |
|||
Sleep</syntaxhighlight> |
|||
{{out}} |
|||
<pre>Same as XPLo entry.</pre> |
|||
=={{header|Go}}== |
=={{header|Go}}== |