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$ . |
|||
⚫ | |||
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[] . |
||
⚫ | |||
# If the number is prime, return the number itself |
|||
while t * t <= num |
|||
if |
if num mod t = 0 |
||
primes[] &= |
primes[] &= t |
||
num = num / t |
|||
. |
|||
currentPrime = 2 |
|||
currentNum = num |
|||
repeat |
|||
if currentNum mod currentPrime = 0 |
|||
primes[] &= currentPrime |
|||
currentNum = currentNum / currentPrime |
|||
else |
else |
||
t += 1 |
|||
currentPrime += 1 |
|||
call isPrime currentPrime result$ |
|||
until result$ = "true" |
|||
. |
|||
. |
. |
||
call isPrime currentNum result$ |
|||
until result$ = "true" |
|||
. |
. |
||
primes[] &= |
primes[] &= num |
||
. |
. |
||
call decompose 9007199254740991 r[] |
|||
print r[] |
|||
</syntaxhighlight> |
</syntaxhighlight> |
||