bool arr[100001];//默认为0
for (int i = 0; i < 100001; i++)
{
arr[i] = 0;
}
arr[0] = 1;
arr[1] = 1;//这两个肯定不是质数
//筛选法求质数
for (int i =2; i < sqrt(100001); i++)//因为如果它不是质数,那么它一定可以表示成两个数(除了1和它本身)相乘,这两个数必然有一个小于等于它的平方根。只要找到小于或等于的那个就行了
{
if (arr[i]==0)//如果没有被划去,2 3 通过,到4的时候,发现被划去了,就从5开始
{
for (int j = 2; i*j <= n; j++)//依次去除i的2、3、4、、、、倍
{
arr[i*j] = true;
}
}
}
剩下的arr[i]=0的即为素数
bool isPrim(int num)
{
for (int i = 2; i <= sqrt(num); i++)// 因为如果它不是质数,那么它一定可以表示成两个数(除了1和它本身)相乘,这两个数必然有一个小于等于它的平方根。只要找到小于或等于的那个就行了
{
if (num%i==0)
{
return 0;
}
}
return 1;
}