PAT乙级1007 素数对猜想
送分题,但是有个测试用例超时了,这让我又温习了一遍求素数的方法。话不多说上代码:
#include <bits/stdc++.h>
using namespace std;
bool prime(int a)
{
int i;
for(i=2;i<=sqrt(a);i++)
{
if(a%i==0)return false;
}
return true;
}
int main()
{
int ans=0;
int n,i,temp1=1;
cin>>n;
for(i=2;i<=n;i++)
{
if(prime(i))
{
if(i-temp1==2)
{
ans++;
temp1=i;
}
else
{
temp1=i;
}
}
}
cout<<ans;
return 0;
}
重点就是prime函数了。如果优化时间复杂度,只要让i遍历到给定的数a开根号即可,大型数据最好用long long。