一知半解讲python第二季:2.素数判断

问题:输入一个非零正整数,判断其是否是素数,是输出yes,不是输出no。

问题分析:

判断一个数是否是素数的方法是看其是否有1和自身之外的因子,只要有一个就说明不是素数。因此问题转化为判断2——n-1是否是n的因子,这就涉及到循环语句及判断语句,另外当发现有因子时还需要提前结束循环。而判断一个数是否是另外一个数的因子的方法是n%i是否等于0。

代码如下:

#coding:cp936

flag=0

n=eval(input("请输入待判断的整数:"))

for i in range(2,n):#从2开始到n-1结束, 每次+1

if(n%i==0):

flag=1

break #或者i=n

if(flag==0):

print("yes")

else:

print("no")

这里要解释一下flag变量,在程序设计中把这种变量称为标记变量,标记某事的两种及以上的状态。在这里flag=0,表示n是素数;flag=1,表示n不是素数。对于初学者来说,一般很难想到使用标记变量,如果你想到了,那么说明你是非常非常非常有天份的哦。

此外,提前结束循环的方法需要留意,break是专用命令,其实没有break提前讲循环变量值超限也可以。

此题,对于初学者来说属于稍有难度的题,也是必会题,要点是提前结束循环以及标记变量的思想和用法,这两个内容对后续学习非常重要。

留个思考:循环终止值可不可以再小一些。

下图是c++的代码供大家比较:

ps:刚刚用了一个多小时写了一篇更详尽的文章,可在dev-c++copy代码到这里时居然ctrl+v引发了无响应,结果悲催了。再写一遍的心情没有了,只好写了这篇简略的。最近杂事多,状态不好,所以更新慢!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181011G0KF7900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券