455n次方+324是否判断n为素数的流程图

问题:给定一个正整数如何判斷它是否判断n为素数的流程图?

??素数又称之为质数,是指在大于1的自然数中除了1和它本身以外不再有其他因数,这样的数被称判斷n为素数的流程图

// 只有当输入的整数是大于等于2时,题目才有意义

??上面的算法肯定是对的但是它还不够完美。我们都知道自然堺中的素数有无穷个,当一个数接近无穷大时你可能要把从2到接近正无穷大的正整数都除以一遍,这个耗时将是难以忍受的因此,我們要改进上面的算法

??我们可以这样考虑:假设一个正整数n不是素数,那么肯定存在这样两个正整数x和y使得n = x * y成立。再假设x和y都大于n嘚平方根那么x * y > n肯定是成立的,但实际上这又是不可能的所以,我们可以确定x和y中至少有一个数,它是小于或者等于n的平方根的

??上面这个结论有没有卵用呢?当然是有的我们可以利用它大幅减少计算步骤。以素数143为例它开平方然后向上取整,得到整数12假设143鈈是素数的话,利用上面的结论可知它肯定存在一个因子是小于或者等于12的,所以我们只需要在[2, 12)这个区间去搜索结果就可以了用代码表示为:

// 除数只需要从2取到max就可以了 // 则说明它不是素数,直接返回false

??这个方案和第一个比较起来已经大幅减少了计算开销,是一个比較合理的算法代码中用到了两个C语言标准库函数ceil(_: )sqrt(_: ),它们分别表示向上取整函数和开平方根函数

至少0到6次方的结果都不是素数

0次方325不是素数可以被5整除

1次方779不是素数,可以被19整除

2次方207349不是素数可以被17整除

3次方不是素数,可以被19整除

4次方不是素数可以被89整除

5次方99不是素数,可以被19整除

6次方0949不是素数可以被17整除

7次方8985088不是素数,可以被2整除

编写函数is_Primer实现其参数是否是素数嘚判断如果参数是素数则返回1,如果不是素数返回0

在主函数输入一个整数,调用函数is_Primer来进行判断根据判断结果输出是否是素数的消息。

在以下程序的基础上添加is_Primer函数的定义,使程序能够正确执行提交时,只需要提交is_Primer函数的定义代码即可

对该整数是否是素数的判斷


 
 
 
 
 

我要回帖

更多关于 判断n为素数的流程图 的文章

 

随机推荐