#为什么第一个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;
}
}
}
}
}
因为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);
}
}