怎么判断一个正整数是否为素数 流程图

怎么判断一个正整数是否为素数 流程图,第1张

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之内的素数用多种方法求,请附带流程图,谢谢、问:设计一个算法,任意输入一个正整数,判断这个数是否为素数,并画出程序框图。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9315500.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存