素数筛
#include <math.h>
#define MAX_N 100
int prime[MAX_N + 5] = {0};
void init() {
for (int i = 2; i <= MAX_N; i++) {
if (prime[i]) continue;
prime[++prime[0]] = i;
for (int j = 2 * i; j <= MAX_N; j += i) {
prime[j] = 1;
}
}
return ;
}
int main() {
init();
for (int i = 1; i <= prime[0]; i++) {
printf("%d\n", prime[i]);
}
return 0;
}
最小质因数
#include <stdio.h>
#define MAX_N 100
int prime[MAX_N +5];
void init() {
for (int i = 2; i <= MAX_N; i++) {
if (prime[i]) continue;
for (int j = i; j <= MAX_N; j += i) {
if (prime[j]) continue;
prime[j] = i;
}
}
return ;
}
int main() {
init();
for (int i = 2; i <= MAX_N; i++) {
printf("min_fac[%d] = %d\n", i, prime[i]);
}
return 0;
}
最大质因数
#include <stdio.h>
#define MAX_N 100
int prime[MAX_N +5];
void init() {
for (int i = 2; i <= MAX_N; i++) {
if (prime[i]) continue;
for (int j = i; j <= MAX_N; j += i) {
prime[j] = i;
}
}
return ;
}
int main() {
init();
for (int i = 2; i <= MAX_N; i++) {
printf("max_fac[%d] = %d\n", i, prime[i]);
}
return 0;
}