判断一个数是否是素数
#include "mathh"
int su(long x)
{
int i;
if(x%2==0) return 0;
else
for(i=3;i<sqrt(x);i+=2)
if(x%i==0) return 0;
return 1;
}
判断素数,若是就返回1,否则就返回0,先看能不能被2整出,若整除肯定不是素数,如不整除就看它能不能被3,5,7,9。。。一直到sprt(x),整除。若整除就不是素数
判断是否是质数最直观和简单的方法就是从2开始直接除,能除尽(余数为0)就不是质数。则C语言实现为:
int isprime(int m)
{
int i;
for(i=2;i<m;i++)
if(m%i==0)
return 0;
else
return 1;
}
该算法的时间复杂度O(n)。
可以改进一下,根据如果一个数是合数,那么它的最小质因数肯定小于等于它的平方根。用反证法可以证明一下。假设x是n的最小质因数,则存在n/x=p。p>x,xp=n。如果x不小于等于它的平方根,则xx>n,而p>x,故xp>n,假设不成立。合数是与质数相对应的自然数。一个大于1的自然数如果它不是合数,则它是质数。也就是说如果一个数能被它的最小质因数整除的话,那它肯定是合数,即不是质数。所以判断一个数是否是质数,只需判断它是否能被小于它开跟号后的所有数整除,因此,这样做的运算少了很多,降低了时间复杂度。
1、首先打开CodeBlocks,创建一个新项目。
2、项目语言,选择“c”, 我们将项目名称命名为“primeNumber”。
3、然后下一步点击“finish”。
4、创建好项目后,我们打开 “mainc”文件。
5、素数即质数,也就是除了1和它本身以外不再有其他因数,首先是实现输入口。
6、输入口完成后,接下来就是判断素数。 要判断素数,我们要从它的特点开始找。素数的因子 只有1和它本身。那么,就是说,我们可以通过找到这个数的所有因数,进行比对即可。
7、先定义好相关的变量,这里result是用来存储因子之和的,用循环,遍历所有可能因子。
其中 if判断,i是不是prime的因数。 %是求余数的运算符。当能被整除时,结果为0。
8、执行完for循环后,result中存入的就是 prime的因数之和,其中也包括它本身。接下来只要判断 prime+1 是否与result相等。如果相等,就表示result中是1+数本身,即为素数。
以上就是关于判断一个数是不是素数的c语言程序全部的内容,包括:判断一个数是不是素数的c语言程序、c语言怎么判断一个数是素数、c语言判断是不是素数的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)