楠山若芸 2022-07-13 18:30 采纳率: 95%
浏览 36
已结题

布尔类型素数求解回答问题

#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;
}
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条回答 默认 最新

  • Code_流苏 优质创作者: C/C++技术领域 2022-07-13 18:41
    关注

    以下所写可以参考,与题主所写其实很类似的,都有素数部分,判断素数那一段代码的形成其实跟素数定义相关,素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

    //编程及注释:Code_流苏
    //定义头文件
    #include<stdio.h>
    #include<math.h>
    //主函数
    int main()
    {
        //定义i,j用作循环  flag用作计数
        int i,j,flag=0;
        //输出提示
        printf("\t100以内的素数有:\n");
        //循环判断 100以内素数的筛选
        for(i=2;i<=100;i++)
        { 
            for(j=2;j<=sqrt(i);j++)
            {
                if(i%j==0)
                {
                    break;
                } 
            }
                
        // 如果完成所有循环,那么i为素数    
        // 注意最后一次循环,会执行j++,j+1>sqrt(i)        
            if(j>sqrt(i))
            {
                //设置域宽为5,输出素数
                printf("%5d ",i);
                //每输出一个素数 寄一个数
                flag++;
                //每五个素数输出一次换行
                if(flag%5==0)
                    printf("\n");
            }
            
        }
         //返回0,代表程序执行结束
        return 0;
    }
    

    如有帮助,还请帮忙点下采纳!感谢!

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

报告相同问题?

问题事件

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