**與這道題《ADV-354 質數》不同的是,
本道題要求先輸出所有質數的個數 ,再輸出每個質數,所以需要一個數組來暫存質數,最後再輸出**
AC代碼:
#include<stdio.h>
#include<math.h>
int isprime(int n){ //是質數,返回 1; 否則返回 0
int i;
if( n % 2 == 0 ) return 0;
for( i=3; i<=sqrt(n); i+=2){
if( n % i == 0) return 0;
}
return 1;
}
int main(){
int n, i, flag=0;
scanf("%d", &n);
int a[n], j=0; //數組 a 暫存質數
if( n < 2){
return 0;
}
else if( n > 2 ){
a[j] = 2;
j += 1;
flag += 1;
}
for(i=3; i<n; i++){
if( isprime(i) ){
a[j] = i;
j += 1;
flag += 1;
}
}
printf("%d\n", flag);
for(i=0; i<flag; i++){
printf("%d ", a[i]);
}
return 0;
}