质数的求解方法
2023-12-14 10:26:47
#质数的求解方法
一、质数
1.质数定义:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)
二、方法
1.自定义函数求质数
代码如下(示例):
bool cmp(int x){
for(int i=2;i*i<=x;i++){
if(x%i==0){
return 0;
}
}
return 1;
}
2.筛选法求质数
大致思想:首先从2开始,依次去删除每个数的倍数
例求1-120内的质数
首先从2 开始,删除2的倍数
接下来删除3的倍数
删除4的倍数,此时4已经不存在了,因为在删2的倍数时,第一个就把4删除了
后续删除倍数的时候,需要先判断当前的数存不存在,如果存在则删除当前数的倍数,否则,删除下一个数
代码如下(示例):
int prime[125]={0};//借用数组来进行筛选,赋初值为0,
//代表现在没有元素被删除
prime[1]=1;//1代表删除
for(int i=1;i<=120;i++){
if(prime[i]==0){
for(int j=i*2;j<=120;j+=2){
prime[j]=1;
}
}
}
for(int i=2;i<=120;i++){
if(prime[i]==0){
cout<<i<<" ";
}
}
总结
第2种方法也可以把所有的质数都存到一个新的数组中,这样避免每次都要去求一遍,以时间换空间
文章来源:https://blog.csdn.net/weixin_36192492/article/details/132740519
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!