郝斌老师C语言 111讲 求素数的疑问
把你的疑问说出来 补充: for (i=2; i{ if (val%i==0)break;}//素数的含义你应该懂了,除了1和它本身不能被其他数整除。这里从2开始(因为1不需要了),用一个循环(从2到val-1)依次取余,如果碰到能刚好整除的,就执行break,即跳出循环。 关键就是这里,为什么能跳出?因为被整除了!所以他就不是素数了。 if (i == val)return true; elsereturn false 再解析一下这里: 跳出以后就执行这个if语句,怎样一种情况才会出现i==val?这个你要理解,就是只有在刚才的for循环中没有被整除,i才可...全部
把你的疑问说出来 补充: for (i=2; i{ if (val%i==0)break;}//素数的含义你应该懂了,除了1和它本身不能被其他数整除。这里从2开始(因为1不需要了),用一个循环(从2到val-1)依次取余,如果碰到能刚好整除的,就执行break,即跳出循环。
关键就是这里,为什么能跳出?因为被整除了!所以他就不是素数了。 if (i == val)return true; elsereturn false 再解析一下这里: 跳出以后就执行这个if语句,怎样一种情况才会出现i==val?这个你要理解,就是只有在刚才的for循环中没有被整除,i才可能加到val!所以如果i==val,那val肯定是素数。
说的有点啰嗦,不知道你理解没有。
追问: if ( IsPrime(m) ) printf("YES
"); else printf("NO
");这个没懂IsPrime函数内部能懂 回答: if()括号里是肯定是bool类型是吧?IsPrime是你写的一个函数,这个函数会返回一个bool值, IsPrime(m)就是调用了这个函数, 函数的返回值会被用于if语句的判断,如果是真,那说明是素数,则printf("YES
"),打印yes,否则打印no! 追问: IsPrime 函数返回的值要么是true 要么是false 是不是可以这么理解if (true)printf("Yes
");elseprintf("No
");。收起