1、首先,打开Clion,在指定的位置创建一个Project。点击File->New Project。
2、这里选择工程的存储路径,并输入工程名,使用c++11标准,会默认创建一个maincpp。
3、首先创建一个头文件,声明判断是否为素数的函数。在项目上右击->New->C/C++ Header File。
4、声明判断是否为素数的函数,输入为一个整型,输出为0或1。
5、添加一个源文件,用于写函数的具体实现。在项目上右击->New->C/C++ Source File。
6、首先对小于2的数过滤,它们不需要进行判断,一定不是素数。
7、接下来使用for循环依次对2~n^(05)之间的数进行判断,若能整除,返回0,说明不是素数。最后,所有都不能整除,再返回1。
8、该程序的输出结果如下。
所谓筛选法,就是每一次都筛去不是素数的数,比如说现在我们知道2是素数,那么4,6,8,……就全标记为非素数,现在下一个数是3,3没有被标记,所以它是素数,并且同时将6,9,12,……全部标记为非素数,再一个数是4,已经被标记过,5没被标记,于是5是素数,同时把所有5的倍数标记……
代码如下:
#include<stdioh>
// end with -1
void findPrime(int range,int primeArray);
// 产生一些标记,标记该处值是否为素数
void findPrimeLabel(int range,int labelArray);
int main()
{
// 声明最大范围
int range;
// 声明一个可以容纳比较多素数的数组
int primeArray[100];
int i;
printf("Input the max range:\n");
scanf("%d",&range);
// 假设工作正常,那么primeArray所指向的就是一系列素数的指针,且最后-1结束
findPrime(range,primeArray);
for(i=0; i<100; i++)
{
if(primeArray[i]==-1)
{
break;
}
else
{
printf("%d\n",primeArray[i]);
}
}
return 0;
}
void findPrime(int range,int primeArray)
{
// algorithm:
// 最小的素数是2
// 从之后开始,每次遇到是倍数的都删掉
int labelArray=new int[range];
int i,j=0;
// 获得标记数组
findPrimeLabel(range,labelArray);
for(i=0; i<=range; i++)
{
// 如果标记是素数,就添加到数组中去
if(labelArray[i]==1)
{
primeArray[j]=i;
j++;
}
}
// 添加结束标识符-1
primeArray[j]=-1;
delete [] labelArray;
}
void findPrimeLabel(int range,int labelArray)
{
int i,j=2;
labelArray[0]=0;
labelArray[1]=0;
// 初始化
for(i=2;i<=range;i++)
{
labelArray[i]=1;
}
for(i=2; i<=range; i++)
{
// 如果仍然是1,说明没被标记,则这是一个素数
if(labelArray[i]==1)
{
// 采用一个while循环,将从2开始的倍数全部标记为0
while(ij<=range)
{
labelArray[ij]=0;
j++;
}
j=2;
}
}
}
#include <stdioh>
#include <mathh>
void main()
{
int i,r,m;
printf("输入一个数:");
scanf("%d",&m);
r=sqrt(m); //判别m是否为素数,用2~根号m之间的每一个整数去除就可以
for(i=2;i<=r;i++)
{
if(m%i==0)
{
break;
}
}
if(i>r){
printf("%d是素数\n",m);
}else
{
printf("%d不是素数\n",m);
}
return 0;
}
流程图没Visio,自己画吧,反正就一个for和一个是否素数的分支
以上就是关于怎么判断一个正整数是否为素数 流程图全部的内容,包括:怎么判断一个正整数是否为素数 流程图、在C语言中,用筛选法求100之内的素数用多种方法求,请附带流程图,谢谢、问:设计一个算法,任意输入一个正整数,判断这个数是否为素数,并画出程序框图。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)