第51课 我是质数吗
我是质数吗(for循环、if语句、标示法)

质数是什么?一个大于1的自然数,除了1和它自身外,不能被其他自然数整除,那么这个自然数就叫作质数;否则叫作合数(规定1既不是质数也不是合数)。质数也叫素数,如2、3、5、7、11等都是质数。
关于100以内的质数有这样一个无厘头的故事:“我姨姨(11)和医生(13)用仪器(17)制造药酒(19)。碰见阿三(23)和二舅(29),他们带着山药(31)和三七(37),还跟来了个司仪(41)。石山(43)下送他们来的司机(47)头上戴着个乌纱(53)帽,帽子上写着五九(59),司机还带了几个小朋友(61),他们正在给车涂油漆(67),车里放着生日(71)快乐歌曲,车上插着旗杆(73),旗杆上挂着气球(79)。过会他们要去爬山(83),带上一瓶白酒(89),去山顶庆祝他出生的时候香港(97)回归。”
我是质数吗


运行程序:
请输入正整数:133
我不是质数。
根据质数的定义“一个大于1的自然数,除了1和它自身外,不能被其他自然数整除”,那么循环直接排除1和数字本身,从2开始满足小于num,即for(int i=2;i。如果在2~(num-1)范围内发现了可以被整除的数字,也就是num%i==0,就说明num不是质数。
既然已经得出答案,循环就不必继续执行了,直接执行break跳出循环。
但是,在if中没有直接输出“我不是质数。”,而是修改了一个变量is的值。我把这种方法称之为“标示法”。
敲黑板——标示法
(1)一开始声明了一个变量is。这里的is表示数字num是不是质数。1代表true,
表示是质数;0代表false,表示不是质数。
(2)初始化为is=1,默认num是质数。
(3)如果num%i==0成立,则说明找到了一个因数。因此num不是质数,此时将is赋值为0,表示num不是质数。
(4)通过后续对is的判断,输出想要的内容。
虽然看上去有些烦琐,但是这将判断结果和输出内容做了分离,当程序变得复杂后,这种做法会更便于我们修改和调整程序。
提出思考
一个数不是质数,那它应该至少有一个因数,这个因数是什么呢?
只需要将i输出即可。



巩固练习
(1)下面哪一段代码片段正确地判断了一个整数是不是质数?()
A.
if(num % 2==0){
cout<<"不是质数"<<endl;}
B.
if(num<=1){
cout<<"不是质数"<<endl;}
C.
for(int i=2; i<num; ++i){
if(num % i !=0){
cout<<"是质数"<<endl;}
D.
bool isPrime=true; for(int i=2; i<num; ++i){
if(num % i==0){
isPrime=false; break;}
if(isPrime){
cout<<"是质数"<<endl;}
(2)在判断质数时,以下哪种方法是更高效的?()
A.从2遍历到num B.从2遍历到num/2
C.从2遍历到sqrt(num)D.从1遍历到num(3)编写一个for循环程序,用户输入一个正整数N,计算并输出从1到N的每个整数的平方。
示例:
1、4、9、16、25。