Calmo numbers: Difference between revisions
Content added Content deleted
(Created page with "<big>Definition</big> Let n be a natural number. Let the real divisors of n be: d(1),d(2),d(3),...,d(k), where k is divisible by 3. Add the first three divisors, then the next three, and so on. If the partial sums are prime numbers, then n is called a Calmo number. <big>Example</big> n = 165 divisors = [3 5 11 15 33 55] 3 + 5 + 11 = 19 is prime number 15 + 33 + 55 = 103 is prime number <big>Task</big> let's find Calmo numbers under 1000. =={{header|Ring}}== <syntaxhighl...") |
|||
Line 8: | Line 8: | ||
<big>Task</big> |
<big>Task</big> |
||
let's find Calmo numbers under 1000. |
let's find Calmo numbers under 1000. |
||
=={{header|Ring}}== |
|||
<syntaxhighlight lang="ring"> |
|||
see "works..." + nl |
|||
numCalmo = 0 |
|||
limit = 1000 |
|||
for n = 1 to limit |
|||
Calmo = [] |
|||
for m = 2 to n/2 |
|||
if n % m = 0 |
|||
add(Calmo,m) |
|||
ok |
|||
next |
|||
flag = 1 |
|||
lenCalmo = len(Calmo) |
|||
if (lenCalmo > 5) and (lenCalmo % 3 = 0) |
|||
for p = 1 to lenCalmo - 2 step 3 |
|||
sum = Calmo[p] + Calmo[p+1] + Calmo[p+2] |
|||
if not isPrime(sum) |
|||
flag = 0 |
|||
exit |
|||
ok |
|||
next |
|||
if flag = 1 |
|||
numCalmo++ |
|||
see "n(" + numCalmo + ") = " + n + nl |
|||
see "divisors = [" |
|||
for p = 1 to lenCalmo - 2 step 3 |
|||
sumCalmo = Calmo[p] + Calmo[p+1] + Calmo[p+2] |
|||
if not isPrime(sumCalmo) |
|||
exit |
|||
else |
|||
if p = 1 |
|||
see "" + Calmo[p] + " " + Calmo[p+1] + " " + Calmo[p+2] |
|||
else |
|||
see " " + Calmo[p] + " " + Calmo[p+1] + " " + Calmo[p+2] |
|||
ok |
|||
ok |
|||
next |
|||
see "]" + nl |
|||
for p = 1 to lenCalmo - 2 step 3 |
|||
sumCalmo = Calmo[p] + Calmo[p+1] + Calmo[p+2] |
|||
if isPrime(sumCalmo) |
|||
see "" + Calmo[p] + " + " + Calmo[p+1] + " + " + Calmo[p+2] + " = " + sumCalmo + " is prime" + nl |
|||
ok |
|||
next |
|||
see nl |
|||
ok |
|||
ok |
|||
next |
|||
see "Found " + numCalmo + " Calmo numbers" + nl |
|||
see "done..." + nl |
|||
func isPrime num |
|||
if (num <= 1) return 0 ok |
|||
if (num % 2 = 0 and num != 2) return 0 ok |
|||
for i = 3 to floor(num / 2) -1 step 2 |
|||
if (num % i = 0) return 0 ok |
|||
next |
|||
return 1 |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
works... |
|||
n(1) = 165 |
|||
divisors = [3 5 11 15 33 55] |
|||
3 + 5 + 11 = 19 is prime |
|||
15 + 33 + 55 = 103 is prime |
|||
n(2) = 273 |
|||
divisors = [3 7 13 21 39 91] |
|||
3 + 7 + 13 = 23 is prime |
|||
21 + 39 + 91 = 151 is prime |
|||
n(3) = 385 |
|||
divisors = [5 7 11 35 55 77] |
|||
5 + 7 + 11 = 23 is prime |
|||
35 + 55 + 77 = 167 is prime |
|||
n(4) = 399 |
|||
divisors = [3 7 19 21 57 133] |
|||
3 + 7 + 19 = 29 is prime |
|||
21 + 57 + 133 = 211 is prime |
|||
n(5) = 561 |
|||
divisors = [3 11 17 33 51 187] |
|||
3 + 11 + 17 = 31 is prime |
|||
33 + 51 + 187 = 271 is prime |
|||
n(6) = 595 |
|||
divisors = [5 7 17 35 85 119] |
|||
5 + 7 + 17 = 29 is prime |
|||
35 + 85 + 119 = 239 is prime |
|||
n(7) = 665 |
|||
divisors = [5 7 19 35 95 133] |
|||
5 + 7 + 19 = 31 is prime |
|||
35 + 95 + 133 = 263 is prime |
|||
n(8) = 715 |
|||
divisors = [5 11 13 55 65 143] |
|||
5 + 11 + 13 = 29 is prime |
|||
55 + 65 + 143 = 263 is prime |
|||
n(9) = 957 |
|||
divisors = [3 11 29 33 87 319] |
|||
3 + 11 + 29 = 43 is prime |
|||
33 + 87 + 319 = 439 is prime |
|||
Found 9 Calmo numbers |
|||
done... |
|||
</pre> |