Prime decomposition: Difference between revisions

Content added Content deleted
m (→‎{{header|ASIC}}: Decreased level of header.)
Line 2,260: Line 2,260:
=={{header|EasyLang}}==
=={{header|EasyLang}}==
<syntaxhighlight lang="easylang">
<syntaxhighlight lang="easylang">
func isPrime num . result$ .
if num < 2
result$ = "false"
break 1
.
if num mod 2 = 0 and num > 2
result$ = "false"
break 1
.
for i = 3 to sqrt num
if num mod i = 0
result$ = "false"
break 2
.
.
result$ = "true"
.
func decompose num . primes[] .
func decompose num . primes[] .
t = 2
# If the number is prime, return the number itself
call isPrime num result$
while t * t <= num
if result$ = "true"
if num mod t = 0
primes[] &= num
primes[] &= t
break 1
num = num / t
.
currentPrime = 2
currentNum = num
repeat
if currentNum mod currentPrime = 0
primes[] &= currentPrime
currentNum = currentNum / currentPrime
else
else
repeat
t += 1
currentPrime += 1
call isPrime currentPrime result$
until result$ = "true"
.
.
.
call isPrime currentNum result$
until result$ = "true"
.
.
primes[] &= currentNum
primes[] &= num
.
.
call decompose 9007199254740991 r[]
print r[]
</syntaxhighlight>
</syntaxhighlight>