为什么第一个for中的两个输出语句没有输出

#为什么第一个for中的两个输出语句没有输出

package com.itheima.demo06;

import java.util.Scanner;

public class qiuPingFngGenLianXi {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数:");
        int jieShou = sc.nextInt();
        int beiFen = jieShou;
        boolean flag = true;
        if(jieShou>=2) {
            for (int i = 1; i < jieShou; i++) {
                if (i * i == jieShou) {
                    System.out.println(jieShou + "的平方根是:" + i);
                    i = i;
                    break;
                } else if (i * i > jieShou) {
                    System.out.println(jieShou + "的平方根的整数部分是" + (i - 1));
                    i = i - 1;
                    break;
                }
                for (int x = 1; x <= i; x++) {
                    if (jieShou % x == 0) {
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    System.out.println(beiFen + "是质数");
                    break;
                } else {
                    System.out.println(beiFen + "不是质数");
                    break;
                }
            }
        }
    }
}


img

因为56%2等于0啊,前面两个条件都不满足,第三个for循环判断时,56%2==0,flag就设置为false。然后if(flag)不成立,输出56不是质数,然后break结束循环了啊。所以前两个if条件没满足,整个for循环都已经结束了。你输入59试试

我有一个C语言的代码,你可以看一下,望采纳

#include <iostream>
#include <cmath>
int a[100];
using namespace std;
 
// 判断一个数是否为质数
int is_prime(int x) {
    if (x <= 1) return 0;
    int i, l = sqrt(x);
    for (i = 2; i <= l; i++) {
        if (x % i == 0) return 0;
    }
    return 1;
}
int main()
{
    int x;
    cin>>x;
    if(is_prime(x))
    {
        printf("%d是质数",x);
    }
    else
    {
        printf("%d不是质数",x);    
    }
    
}