Product of min and max prime factors: Difference between revisions
Content added Content deleted
(add RPL) |
(The D code for this problem) |
||
Line 912: | Line 912: | ||
9 82 6889 14 85 86 87 22 7921 10 |
9 82 6889 14 85 86 87 22 7921 10 |
||
91 46 93 94 95 6 9409 14 33 10</pre> |
91 46 93 94 95 6 9409 14 33 10</pre> |
||
=={{header|D}}== |
|||
<syntaxhighlight lang="D"> |
|||
import std.stdio : writef; |
|||
void main() { |
|||
auto sieve = sieve(100); |
|||
for(ulong i = 1; i <= 100; i++) { |
|||
writef("%4d ", min_prime_factor(i, sieve) * max_prime_factor(i, sieve)); |
|||
if(i % 10 == 0) |
|||
writef("\n"); |
|||
} |
|||
} |
|||
bool []sieve(ulong max) { |
|||
bool []sieve = new bool[](max + 1); |
|||
sieve[] = true; |
|||
sieve[0] = false; |
|||
sieve[1] = false; |
|||
for(ulong i = 2; i <= max; i++) |
|||
if(sieve[i]) |
|||
for(ulong j = i * 2; j <= max; j += i) |
|||
sieve[j] = false; |
|||
return sieve; |
|||
} |
|||
ulong min_prime_factor(ulong number, bool []sieve) { |
|||
if (number <= 1) |
|||
return 1; |
|||
for(ulong index = 2; index <= number; index++) |
|||
if(sieve[index] && number % index == 0) |
|||
return index; |
|||
assert(0 && "Sieve was not initialized correctly"); |
|||
} |
|||
ulong max_prime_factor(ulong number, bool []sieve) { |
|||
if (number <= 1) |
|||
return 1; |
|||
for(ulong index = number; index >= 2; index--) |
|||
if(sieve[index] && number % index == 0) |
|||
return index; |
|||
assert(0 && "Sieve was not initialized correctly"); |
|||
} |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
1 4 9 4 25 6 49 4 9 10 |
|||
121 6 169 14 15 4 289 6 361 10 |
|||
21 22 529 6 25 26 9 14 841 10 |
|||
961 4 33 34 35 6 1369 38 39 10 |
|||
1681 14 1849 22 15 46 2209 6 49 10 |
|||
51 26 2809 6 55 14 57 58 3481 10 |
|||
3721 62 21 4 65 22 4489 34 69 14 |
|||
5041 6 5329 74 15 38 77 26 6241 10 |
|||
9 82 6889 14 85 86 87 22 7921 10 |
|||
91 46 93 94 95 6 9409 14 33 10 |
|||
</pre> |
|||
=={{header|Delphi}}== |
=={{header|Delphi}}== |