编写一个C语言程序判断一个数是否是素数

编写一个C语言程序判断一个数是否是素数,第1张

目的:判断一个数是否为素数

# include <stdio.h>

int main(void)

{

int m

int i

scanf("%d",&m)

for(i = 2 i <m i++)     //2到(m-1)的数去除m

{

if(m% i == 0)       // 判断能否整除没槐

break

}

if (i == m)

printf("YES!\n")

else

printf("No!\n")

}

for循环的功能:

①若能整除,通过break跳出函数

②若一直到m-1都不能整除,此时i再自增1到m,不满足i <m跳出for循环,枯亏友这时i = m。

扩展资料:

素数定理:

1、在一个大于1的数a和它的2倍之间(即区间(a, 2a]中)必存在至少一个素数。

2、存在任意长度的素数等差数列。

3、一个偶数可以写成两个合数之和,其中每一个合数都最多只有9个质因数。(挪威数学家布朗,1920年)。

4、一个偶数必定可以写成一个质数加上一个合成数,其中合数的因子个数有上界。(瑞尼,1948年)。

5、一个偶数必定可以写成一个质数加上一个最多由5个因子所组成的合成数。后来,有人简称这结果为 (1 + 5)(空棚中国潘承洞,1968年)。

6、一个充分大偶数必定可以写成一个素数加上一个最多由2个质因子所组成的合成数。简称为 (1 + 2)。

参考资料来源:百度百科-质数

判断素数的原理是:

素数是只能被1和本身整除的数。例如 3只能被1和3整除,17只能被1和17整除等等,想9就不是素数(能被1,3,9整除)。

编程的算法是:

穷举法,就是将需要判断的数除2、除3....一直除到这个数减1.

例如:判断7是不是素数的算法是进行如下运算 7/2,7/3,冲肆租7/散兆4,7/5,7/6,在上述除的过程中如果都不能被除尽则可以断定7是素数,否则就说明7不是素数。

注意:编程时使用求余运算,判断是否能被除雹亏尽。

参考程序如下:

dim i as integer

dim j as integer

dim x as integer

x=val(inputbox("请输入一个自然数:","输入提示"))

for i=2 to x-1

if x mod i=0 then exit for

next i

if i=x then '此处若i的值变为x则说明所以上面的循环全被执行完

print x &"是素数"

else

print x &"不是素数" '若i<x则说明循环的中途x就能被除尽了

endif

当然程序还可以被优化,例如不一定非除到n-1,完全可以除到根号下n,

举例一:判断25是不是素数的话,只需要除到5即可

举例二:对于开根后是小数的可以取整,如判断15是不是素数只需要除到3即可。

简化后的程序运行速度会更快的。


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

原文地址:https://54852.com/yw/8278644.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存