【深基7.例2】质数筛
题目描述
输入 n 个不大于 10^5 的正整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。
输入格式
第一行输入一个正整数 n,表示整数个数。
第二行输入 n个正整数 ai,以空格隔开。
输出格式
输出一行,依次输出ai 中剩余的质数,以空格隔开。
样例 #1
样例输入 #1
5 3 4 5 6 7
样例输出 #1
3 5 7
说明/提示
数据保证,1≤n≤100
代码
#include <stdio.h>
#include <math.h>
//判断质数
int isPrime(int n) {
if (n == 2) {
return 1;
}
else if (n > 2) {
int i;
int flag = 1;
for (i = 2;i <= sqrt(n);i++) {
if (!(n % i)) {
flag = 0;
break;
}
}
if (flag) {
return 1;
}
}
return 0;
}
//输入数字并储存质数
void store(int a[],int *cnt,int n) {
int num;
while (n--) {
scanf ("%d",&num);
if (isPrime(num)) {
a[*cnt] = num;
(*cnt)++;
}
}
}
int main () {
int n,cnt = 0;
int a[100];
scanf ("%d",&n);
store(a,&cnt,n);
for (int i = 0;i < cnt;i++) {
printf ("%d",a[i]);
if (i < n-1) {
printf (" ");
}
}
}