判断素数,经常判断不出来


#include<stdio.h>

int main()
{

    int n,i=2,a;
    scanf("%d",&n);

    while(i<=n){
        if(n % i == 0){
            printf("%d is prime.\n",n);
            i++;
            a=i;
        }
    }
    if(n % a != 0){
        printf("%d is not prime.\n",n);
    }

    return 0;
}

你的逻辑错了。


#include<stdio.h>
int main()
{
    int n,i=2,a = 0;
    scanf("%d",&n);
    while(i<n){ //不能等于
        if(n % i == 0){ //n能整除i,说明不是素数
            printf("%d is not prime.\n",n); //这里应该是no
            a=1; //作为一个标记
            break;
        }
        i++; //i++应该在if外面
    }
    if(a == 0){
        printf("%d is prime.\n",n);
    }
    return 0;
}



//3.3 判断素数

#include <stdio.h>
#include<math.h>
int main()
{
    int m,i,k;
    scanf("%d",&m);
    k=sqrt(m);
    for(i=2;i<=k;i++)
    if(m%i==0)break;
    if(i>=k+1)
    printf("%d is a prime number\n",m);
    else
    printf("%d is not a prime number\n",m);
    return 0;
}