判斷素數的高效率寫法


#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
bool isPrime(int n)
{
if(n == 1)
return false;
if(n == 2 || n == 3)
return true;
if(n % 6 != 1 && n % 6 != 5) //如果這個數不在6或6的倍數的兩側 一定不是素數
return false;
int t = sqrt(n);
for(int i = 5;i <= t;i += 6)
{
if(n % i == 0 || n % (i + 2) == 0) //在兩側也有可能不是素數
return false;
}
return true;
}
int main()
{
int n,t;
cin >> n;
for(int i = 1;i <= n;i ++)
{
cin >> t;
if(isPrime(t))
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com