.LAL. 2022-07-18 17:17 采纳率: 95%
浏览 238
已结题

c++求解素数个数。

输入两个正整数X和Y,输出两者之间的素数个数(包括X和Y)。
输入两个正整数X和Y,输出两者之间的素数个数(包括X和Y)。
1 100
25
这是代码:
#include<bits/stdc++.h>
using namespace std;
bool ss(int i)
{
if(i==1)return false;
int j;
for(j=2;j*j<=i;j++)
{
if(i%j==0)return false;
}
else return true;
}
int main(){
int x,y,a=0;
cin>>x>>y;
for(int i=x;i<=y;i++)
{
if(ss(i)==true)a++;

}
cout<<a;
return 0;
}
有人能一步步解释一下每一步的意思吗,不太懂求素数的方法

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-07-18 17:24
    关注

    函数ss就是判断输入的i是否为素数
    所谓素数,就是某个整数,不能被从2到该数-1之内所有整数整除的数
    比如7,不能被2-6整除,所以是素数
    比如15,能被3和5整除,所以不是素数
    代码中循环为for(j=2;j*j<=i;j++)
    这里用平方和小于i作为结束标志,比如9,如果逐个判断2-8是否能整除,就需要判断7次。但实际只需要判断2-3就可以了,因为4以后即使能整除9,那另一个除数肯定小于4,那么在之前的循环已经判断过了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月13日
  • 已采纳回答 8月5日
  • 创建了问题 7月18日

悬赏问题

  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用