为什么不论输入什么数都打印“是素数”?

int m;
scanf("%d",&m);
int a=1;
int i=2;
for(i=2;i<m;i++){
    if(m/i==0){
    a=0;
    }
}
if(a==1){
printf("是素数");
}
else{printf("不是素数");}

为什么不论输入什么数都打印“是素数”?

判断if(m/i==0)中:不应该是除,而应该是取余

应该是 if(m%i==0),判断能否被一个数整除

当i<m时m/i永远不会等于0啊,至少为1
你应该求模取余用的运算符%啊

你循环里面的判断有问题,判断是否整除是用取余符号%
如有帮助,望采纳。点击我回答右上角【采纳】按钮。
img

int m;
scanf("%d",&m);
int a=1;
int i=2;
for(i=2;i<m;i++){
    if(m%i==0){
      a=0;
      break;
    }
}
if(a==1){
printf("是素数");
}
else{printf("不是素数");}

想要快一点的话可以直接到 √n

     public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int nextInt = scanner.nextInt();
        boolean flag = false;
        for (int i = 2;i < Math.sqrt(nextInt);i++){
            if(nextInt / i == 0){
                flag = !flag;
                break;
            }
        }
        System.out.println(nextInt + (flag ? "是素数" : "不是素数"));
    }