
目的:判断一个数是否为素数
# 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即可。
简化后的程序运行速度会更快的。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)