输出素数的时候一个数为什么会输出多次C语言

输出素数的时候一个数为什么会输出多次C语言

问题描述:

代码如下:


#include<stdio.h>
#include<math.h>
int main() {
    int isprime = 1;
    int M, N;
    scanf("%d %d", &M, &N);
    int k = 0;
    int i = 0;
    int h = 0;
    for (int m = M;m <= N;m++) {
        k = sqrt(m + 1);
        for (i = 2;i <= k;i++) {
            if (m % i == 0) {
                isprime = 0;break;
            }
            if (isprime) {
                printf("%-4d\n",m);
                h++;
                if (h % 10 == 0) {
                    printf("\n");
                }
            }
        }isprime = 1;
    }
    return 0;
}

结果是这样的

img

怎会如此!F1F1!

修改后如下


#include <stdio.h>
#include <math.h>
int main()
{
    int isprime = 1;
    int M, N;
    scanf("%d %d", &M, &N);
    int k = 0;
    int i = 0;
    int h = 0;
    for (int m = M; m <= N; m++)
    {
        k = sqrt(m + 1);
        for (i = 2; i <= k; i++)
        {
            if (m % i == 0)
            {
                isprime = 0;
                break;
            }
        }
        if (isprime)
        {
            printf("%-4d\n", m);
            h++;
            if (h % 10 == 0)
            {
                printf("\n");
            }
        }
        isprime = 1;
    }
    return 0;
}