couM
2021-07-12 15:58
采纳率: 62.5%
浏览 31

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

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("不是素数");}

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 胡什么萝卜 2021-07-12 16:05
    已采纳

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

    点赞 评论
  • CSDN专家-Fay 2021-07-12 16:01

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

    点赞 1 评论
  • 八云黧 2021-07-12 15:59

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

    点赞 1 评论
  • CSDN专家-sinjack 2021-07-12 16:01

    你循环里面的判断有问题,判断是否整除是用取余符号%
    如有帮助,望采纳。点击我回答右上角【采纳】按钮。
    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("不是素数");}
    
    
    点赞 评论
  • 是赵敢敢啊 2021-07-12 16:13

    想要快一点的话可以直接到 √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 ? "是素数" : "不是素数"));
        }
    
    点赞 评论

相关推荐 更多相似问题