// 求某個正整數是否爲素數
void is_Prime()
{
int s;
while (scanf_s("%d", &s) != EOF)
{
if (s < 2)
{
printf("NO\n");
}
else {
int r = -1;
// 這裏先計算平方根,然後+1避免精度損失,同時for循環僅計算一次平方根
// 同時保證2輸出是質數
int bound = (int)sqrt(s) + 1;
for (int i = 2; i < bound; i++)
{
r = s % i;
if (r == 0)
break;
}
if (r == 0)
printf("%s\n", "NO");
else
printf("%s\n", "YES");
}
}
}
// 素數篩選法求出某個區間內[1, n]的所有素數
void init(int*prime, int*primeSize, bool*mark)
{
/*
先把對應的區間所有的位置都標記爲素數,然後依次遍歷;
如果當前的數是素數,那麼在這一區間的所有該素數的整數倍都要標記
爲非素數。不過這裏從i的平方開始,因爲小於i的該素數倍數的都被之前的標記過
所以不再重複標記
*/
for (int i = 1; i <= 10000; i++)
mark[i] = false;
*primeSize = 0;
for (int i = 2; i <= 10000; i++)
{
if (mark[i] == true)
continue;
prime[(*primeSize)++] = i;
for (int j = i*i; j <= 10000; j += i)
{
mark[j] = true;
}
}
}
void get_Primes()
{
int prime[10000];
int primeSize;
bool mark[10001];
init(prime, &primeSize, mark);
int n;
while (scanf_s("%d", &n) != EOF)
{
bool isOput = false;
for (int i = 0; i < primeSize; i++)
{
if (prime[i] < n && prime[i] % 10 == 1)
{
if (isOput == false)
{
isOput = true;
printf("%d", prime[i]);
}
else
printf(" %d", prime[i]);
}
}
if (isOput == false)
printf("-1\n");
else
printf("\n");
}
}