scanf ("%d", &m);
if ( m <= 1) {
is_prime = 0;
} else if (m == 2) {
is_prime = 1;
} else if (m % 2 == 0) {
is_prime = 0;
} else{
is_prime = 1;
}
limit = sqrt(m) + 1;
for(i = 3; i <= limit; i += 2){
if(m % i == 0){
is_prime = 0;
break;
}
}
输入11为啥is_prime是11呢
scanf ("%d", &m);
if ( m <= 1) {
is_prime = 0;
} else if (m == 2) {
is_prime = 1;
} else if (m % 2 == 0) {
is_prime = 0;
} else{ // m=11 走这个分支, is_prime = 1
is_prime = 1;
}
limit = sqrt(m) + 1; // limit = 4
for(i = 3; i <= limit; i += 2){
if(m % i == 0){ // 11 % 3 = 2
is_prime = 0;
break;
}
}
if ( m <= 1) {
is_prime = 0;
} else if (m == 2) {
is_prime = 1;
} else if (m % 2 == 0) {
is_prime = 0;
} else{ // m=11 走这个分支, is_prime = 1
is_prime = 1;
}
limit = sqrt(m) + 1; // limit = 4
for(i = 3; i <= limit; i += 2){
if(m % i == 0){ // 11 % 3 = 2
is_prime = 0;
break;
}
}
所以最终is_prime=1
温馨提示:答案为网友推荐,仅供参考