44-14
4-14怎么做?
for(n=2; n<m; n++)
{
if( m % n == 0 ) //什么条件下跳出当前循环
break; //这里应该退出当前循环了
}
//素数是只能够被1和它本身整除的数
例如:2 能够被1 和它本身整除,它是最小的素数
3 能够被1整除,不能被2整除,能够被它本身整除,它也是素数
4 能够被1和它本身整除,但也能够被2整除,不满足素数的条件,他是非素数
所以,在判断数m是否是素数时,只需判断m 能否被 n = 2 至 (m-1)之间的某个数整除,如果满足 m % n == 0,跳出循环,因为已经能够判断出m不是素数,就不用再花时间找出其他能够判断出m不是素数的条件了。
当n 循环至m-1仍然不能被m整除,则m是素数
如果以上理解了,可以优化代码,提高计算效率,思路如下:m 不能被 m/2 + 1的数整除 (例如:判断10是否是素数,10是必定不能够被 6 (10/2 -1)的数整除了),所以可修改判断条件:m 能否被 n = 2 至 (num-1)之间的某个数整除 为 m 能否被 n = 2 至 num/2 -1之间的某个数整除,这样就判断n后半部分的数了。
举报