判断素数的程序理解

判断一个数是否为素数方法一:判断n是否能被2~sqrt(n)间的数整除
#include <stdio.h>
#include <math.h>
int main()
{
int n;
scanf("%d",&n);
int k;
k=sqrt(n);
for(int i=2;i<=k;i++)
{
if(n%i==0)
break;
}
if(i<=k)
printf(“This is not a prime.\n”);
else
printf(“This is a prime.\n”);
return 0;
}
刚开始不理解为什么i<=k的时候,这就不是个素数,而当i>k的时候才能证明n为素数。

理解这个问题就要明白i最后的值为多少,因为是通过i与k的值比较来判定的,同时,k的值是确定的。
在for循环中,第一次执行时用定义的循环变量的初值,从第二次循环开始,每一次都是先执行循环变量的增减,再执行循环变量的条件判断。最后的循环变量的值是正好不满足循环条件的那个值。

但是,当使用了break之后,如果因为break跳出了循环,循环变量的值为执行break时的那个值。

所以在程序中,只要因执行了break,跳出循环,则i的值为当时的i值,不执行加1操作,故i一定小于等于k。
则同时也证明存在一个数使得n被整除,即n不是素数。
但是,如果在2-k之间不存在使得n被整除的数,即不会执行break语句,不会跳出for循环,则循环语句一直执行到最后,i的值最终为k+1,也就是i>k了。
所以通过i>k可得要判断的数是素数。

判断一个数是否为素数方法二:判断n是否能被2~n-1之间的数整除
#include <stdio.h>
int main()
{
int i,n;
scanf("%d",&n);
for(i=2;i<=n-1;i++)
{
if(n%i===0)
break;
}
if(i<n)
printf(“This is not a prime.\n”);
else
printf(“This is a prime.\n”);
return 0;
}

素数,又称为质数,定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值