为啥输出时打印两次呢?求解答

#include
#include 
int main()
{
    int m;
    scanf("%d",&m);
    if(m>2)
    {
        for(int i=2;i<sqrt(m)+1;i++)
           {
                if(m%i!=0)
                    printf("是素数");
                else
                    printf("%d不是素数",m);
            }
    }
    else
        printf("%d不是素数!",m);

    return 0;
}


结果:
6
6不是素数6不是素数
Process returned 0 (0x0) execution time : 3.518 s
Press any key to continue.


#include<stdio.h>
#include <math.h>
int main()
{
    int m;
    scanf("%d", &m);
    int flag = 1;
    if (m >= 2)
    {
        for (int i = 2; i <= sqrt(m); i++)
        {
            if (m % i == 0)
            {
                flag = 0;
                break;
            }
        }
    }
    else
        flag = 0;
    if (flag)
        printf("%d是素数!", m);
    else
        printf("%d不是素数!", m);

    return 0;
}

我想知道我这个错因在哪