#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;
}
这是用布尔函数来求素数,有谁能跟我解释这代码每一行的意思,还有判定是否是素数的那一段代码是怎么编的也就是怎样形成的
以下所写可以参考,与题主所写其实很类似的,都有素数部分,判断素数那一段代码的形成其实跟素数定义相关,素数
是指在大于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;
}
如有帮助,还请帮忙点下采纳!感谢!
注释如下:
#include<bits/stdc++.h>
using namespace std;
bool ss(int i) //素数判断函数
{
if(i==1)return false; //等于1直接返回false , 1是非素数
int j;
for(j=2;j*j<=i;j++) //从2开始,逐一和2,3,4,5,....求余数,只要有一个求余得0,就返回是非素数
{
if(i%j==0)return false;
}
return true; //直接j*j<=i都没有一个被整除的,就返回是素数
}
int main(){
int x,y,a=0;
cin>>x>>y;
for(int i=x;i<=y;i++)
{
if(ss(i)==true)a++; //在x,y间,逐个调用素数判断函数,返回true,计数变量就加1
}
cout<<a; //输出x,y间一共有多少个素数
return 0;
}