以下是引用luckhide在2016-3-24 12:22:59的发言:
这样行吗?不懂能除尽2、3、5的要返回2、3、5,再说返回的2、3、5不是等同于true吗?
这样行吗?不懂能除尽2、3、5的要返回2、3、5,再说返回的2、3、5不是等同于true吗?
返回的是邏輯値true,不是返回2、3、5數値。這3個特殊數値是後面循環邏輯中會漏掉的素數,即後面的循環會把它們判斷爲false,那是不行的。
授人以渔,不授人以鱼。
bool IsPrime2(unsigned short n) { if (n % 2 == 0) { return n == 2; } if (n % 3 == 0) { return n == 3; } if (n % 5 == 0) { return n == 5; } int b=4; for (unsigned short i = 7; i * i <= n; i += b) { if (n % i == 0) { return false; } b^=6; } return true; }
[此贴子已经被作者于2016-3-24 12:43编辑过]