Product of min and max prime factors: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add Draco) |
Not a robot (talk | contribs) (Add C) |
||
Line 89: | Line 89: | ||
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|C}}== |
|||
<syntaxhighlight lang="c">#include <stdbool.h> |
|||
#include <stdio.h> |
|||
#include <string.h> |
|||
#define MAX 100 |
|||
void sieve(bool *prime, int max) { |
|||
memset(prime, true, max+1); |
|||
prime[0] = prime[1] = false; |
|||
for (int p=2; p*p<=max; p++) |
|||
for (int c=p*p; c<=max; c+=p) |
|||
prime[c] = false; |
|||
} |
|||
int lo_fac(bool *prime, int n) { |
|||
if (n==1) return 1; |
|||
for (int f=2; f<=n; f++) |
|||
if (prime[f] && n%f == 0) return f; |
|||
return n; |
|||
} |
|||
int hi_fac(bool *prime, int n) { |
|||
if (n==1) return 1; |
|||
for (int f=n; f>=2; f--) |
|||
if (prime[f] && n%f == 0) return f; |
|||
return n; |
|||
} |
|||
int main() { |
|||
bool prime[MAX+1]; |
|||
sieve(prime, MAX); |
|||
for (int i=1; i<=MAX; i++) { |
|||
printf("%6d", lo_fac(prime, i) * hi_fac(prime, i)); |
|||
if (i%10 == 0) printf("\n"); |
|||
} |
|||
return 0; |
|||
}</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|C++}}== |
=={{header|C++}}== |