Almost prime: Difference between revisions
Content added Content deleted
Basicgames (talk | contribs) |
Space Ghost (talk | contribs) (k-almost prime sequence using Odin) |
||
Line 3,208: | Line 3,208: | ||
k = 4: 16 24 36 40 54 56 60 81 84 88 |
k = 4: 16 24 36 40 54 56 60 81 84 88 |
||
k = 5: 32 48 72 80 108 112 120 162 168 176</pre> |
k = 5: 32 48 72 80 108 112 120 162 168 176</pre> |
||
=={{header|Odin}}== |
|||
<syntaxhighlight lang="Go"> |
|||
package almostprime |
|||
import "core:fmt" |
|||
main :: proc() { |
|||
i, c, k: int |
|||
for k := 1; k <= 5; k += 1 { |
|||
fmt.printf("k = %d:", k) |
|||
for i, c := 2, 0; c < 10; i += 1 { |
|||
if (kprime(i, k)) { |
|||
fmt.printf(" %v", i) |
|||
c += 1 |
|||
} |
|||
} |
|||
fmt.printf("\n") |
|||
} |
|||
} |
|||
kprime :: proc(n: int, k: int) -> bool { |
|||
p, f: int = 0, 0 |
|||
m := n |
|||
for p := 2; ((f < k) && (p * p <= m)); p += 1 { |
|||
for (0 == m % p) { |
|||
m /= p |
|||
f += 1 |
|||
} |
|||
} |
|||
return f + (m > 1 ? 1 : 0) == k |
|||
} |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
k = 1: 2 3 5 7 11 13 17 19 23 29 |
|||
k = 2: 4 6 9 10 14 15 21 22 25 26 |
|||
k = 3: 8 12 18 20 27 28 30 42 44 45 |
|||
k = 4: 16 24 36 40 54 56 60 81 84 88 |
|||
k = 5: 32 48 72 80 108 112 120 162 168 176 |
|||
</pre> |
|||
=={{header|Oforth}}== |
=={{header|Oforth}}== |