Perfect numbers: Difference between revisions
Content added Content deleted
(add JavaScript) |
m (Fixed lang tags.) |
||
Line 11:
=={{header|Ada}}==
<lang ada>function Is_Perfect(N : Positive) return Boolean is▼
<lang ada>▼
▲function Is_Perfect(N : Positive) return Boolean is
Sum : Natural := 0;
begin
Line 21 ⟶ 20:
end loop;
return Sum = N;
end Is_Perfect;</lang>
</lang>▼
=={{header|ALGOL 68}}==
OD</lang>
Output:
<lang
=={{header|AutoHotkey}}==
This will find the first 8 perfect numbers.
<lang
If isMersennePrime(A_Index + 1)
res .= "Perfect number: " perfectNum(A_Index + 1) "`n"
Line 76 ⟶ 73:
=={{header|AWK}}==
<lang awk>$ awk 'func perf(n){s=0;for(i=1;i<n;i++)if(n%i==0)s+=i;return(s==n)}▼
<lang awk>▼
▲$ awk 'func perf(n){s=0;for(i=1;i<n;i++)if(n%i==0)s+=i;return(s==n)}
BEGIN{for(i=1;i<10000;i++)if(perf(i))print i}'
6
Line 129 ⟶ 125:
return 0;
</lang>▼
=={{header|C++}}==
Line 154 ⟶ 149:
sum += i ;
return ( ( sum == 2 * number ) || ( sum - number == number ) ) ;
▲}</lang>
▲</lang>
=={{header|Clojure}}==
<lang lisp>(defn proper-divisors [n]▼
▲(defn proper-divisors [n]
(if (< n 4)
'(1)
Line 166 ⟶ 159:
(defn perfect? [n]
(== (reduce + (proper-divisors n)) n)
=={{header|Common Lisp}}==
Line 176 ⟶ 168:
=={{header|D}}==
Based on the Algol version:
<lang d>import std.math: sqrt;
bool perfect(int n) {
Line 200 ⟶ 191:
if (perfect(n))
printf("%d\n", n);
▲}</lang>
=={{header|E}}==
Line 216 ⟶ 206:
=={{header|Erlang}}==
<lang erlang>is_perfect(X) ->
X == lists:sum([N || N <- lists:seq(1,X-1), X rem N == 0]).</lang>▼
▲ X == lists:sum([N || N <- lists:seq(1,X-1), X rem N == 0]).
=={{header|Forth}}==
=={{header|Fortran}}==
{{works with|Fortran|90 and later}}
<lang fortran>
=={{header|Groovy}}==
Line 259 ⟶ 247:
8128</pre>
=={{header|Haskell}}==
=={{header|J}}==
The program defined above, like programs found here in other languages, assumes that the input will be a scalar positive integer.
Examples of use, including extensions beyond those assumptions:
<lang j> is_perfect 33550336
=={{header|Java}}==
Line 331 ⟶ 319:
=={{header|Logo}}==
<lang logo>to perfect? :n
output equal? :n apply "sum filter [equal? 0 modulo :n ?] iseq 1 :n/2
end</lang>
=={{header|M4}}==
<lang M4>define(`for',
`ifelse($#,0,``$0'',
`ifelse(eval($2<=$3),1,
Line 357 ⟶ 342:
for(`x',`2',`33550336',
`ifelse(isperfect(x),1,`x
')')</lang>
=={{header|Mathematica}}==
Custom function:
<lang Mathematica>PerfectQ[i_Integer] := Total[Divisors[i]] == 2 i</lang>
Examples (testing 496, testing 128, finding all perfect numbers in 1...10000):
<lang Mathematica>PerfectQ[496]
▲ Flatten[PerfectQ/@Range[10000]//Position[#,True]&]
gives back:
<lang Mathematica>True
▲ False
▲ {6,28,496,8128}
=={{header|MAXScript}}==
<
(
local sum = 0
Line 390 ⟶ 368:
)
sum == n
)</
=={{header|OCaml}}==
Line 440 ⟶ 418:
=={{header|R}}==
<lang R>is.perf <- function(n){
if (n==0|n==1) return(FALSE)
s <- seq (1,n-1)
Line 451 ⟶ 428:
# Usage - Warning High Memory Usage
is.perf(28)
sapply(c(6,28,496,8128,33550336),is.perf)</lang>
=={{header|Ruby}}==
<lang ruby>def perf(n)
Line 480 ⟶ 456:
=={{header|Slate}}==
<lang slate>n@(Integer traits) isPerfect
[
(((2 to: n // 2 + 1) select: [| :m | (n rem: m) isZero])
inject: 1 into: #+ `er) = n
].</lang>
=={{header|Smalltalk}}==
Line 524 ⟶ 498:
=={{header|Ursala}}==
<lang Ursala>#import std
#import nat
|