用根号来判断素数(c语言)

img


哪里有问题呢,比如输入59的时候结果什么都没有输出,有一些数又有输出

你上面i<=sqrt() 下面又是 i>=sqrt() 可以把下面的改成if (i > sqrt((double)n))

int main() {
    int i, n;
    i = 1;
    scanf("%d", &n);
    
    if (n > 3) {
        for (i = 2; i <= sqrt((double)n); i++) {
            if (n % i == 0) {
                printf("no");
                break;
            }
        }
        if (i > sqrt((double)n)) {
            printf("yes");
        }
    } else {
        printf("error");
    }
    return 0;
}


改动处见注释,供参考:

#include <stdio.h>
#include <math.h>
int main() {
    int i, n, k;  // 修改
    i = 1;
    scanf("%d", &n);

    if (n > 3) {
        for (i = 2, k = (int)sqrt((double)n); i <= k; i++) {  // 修改
            if (n % i == 0) {
                printf("no");
                break;
            }
        }
        if (i > k) {    // 修改
            printf("yes");
        }
    }
    else {
        printf("error");
    }
    return 0;
}

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^