#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int a[10000];
int prime(void) {
int i, j, k, p;
a[0] = 2;
for (i = 3,j=1; i < 100000;i+=2 ) {
p = (int)pow(i, 0.5);
for (k = 3; k <=p; k += 2)
if (i % k == 0)
goto b;
a[j] = i;
j++;
b:;
}
return(j);
}
int main(void) {
int n, i, j, s;
scanf("%d", &n);
int* p = (int*)calloc(n, sizeof(int));
s=prime();
for (i = 0; i < n; i++)
scanf("%d", p + i);
for (j = 0; j < n; j++)
for (i = 0; a[i]<*(p+j); i++)
if (*(p + j) % a[i] == 0)
*(p + j) = 1;
for (i = 0; i < n-1; i++)
if (*(p + i) != 1)
printf("%d ", *(p + i));
if (*(p + n-1) != 1)
printf("%d", *(p + n-1));
return(0);
}
洛谷P5736 【深基7.例2】质数筛经典解法
最新推荐文章于 2024-02-04 17:35:05 发布