第一种算法,参考自这里:
#include <iostream>
#include <cstdlib>
#include <string>
#include<cmath>
using namespace std;
bool jisuan(int x);
int main(){
int x,y;
int i;
int sum=0;
cin>>x>>y;
for(i=x;i<=y;i++)
if(jisuan(i))
{
sum++;
}
cout<<sum<<endl;
return 0;
}
bool jisuan(int x){
int i=2;
if(x==1||x==0) return false;
while( i<=floor(sqrt(x)) && (x%i!=0) )
i++;
if(i>floor(sqrt(x)))
return true;
return false;
}
刚开始第一种有点难理解,于是我想了一下是否可以根据除数的个数来算素数,
既然素数只能被1和它本身整除,那只要设置能被整除的除数个数为2就行了
第二种算法
#include <iostream>
#include <cstdlib>
#include <string>
#include <cmath>
bool jisuan(int z);
using namespace std;
int main(){
int x,y;
int i;
int sum=0;
cin>>x>>y;
for(i=x;i<=y;i++)
if(jisuan(i)) sum++;
cout<<sum<<endl;
return 0;
}
bool jisuan(int z){
int a,i;
int b=0;
for(i=1;i<=z;i++)
if(z%i==0) b++;
if(b==2) return true;
return false;
}
存在问题:样例通过,OJ网站运行超时,真头疼
如果有大佬改进成功了请务必告诉我
版权声明:本文为jingzhe0306原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。