import java.util.Scanner;
public class Main {
public static void main (String[] args)
{
int value;
int check = 2;
boolean flag = true;
Scanner input = new Scanner(System.in);
System.out.println("Number of times:");
value = input.nextInt();
for(int i = 2; i <= value;i++ )
{
while(check <= i/2)
{
if(i%check == 0)
{
flag = false;
break;
}
check++;
}
if(flag)
{
System.out.print(i + ", ");
}
}
}
输出始终打印:3和5的倍数
节目打印2,3,5,7,9,11,13,15
我想知道它为什么会发生,因为当我干掉它时,它不会捡到3和5。
答案 0 :(得分:2)
您需要在for循环中为check
的每个值初始化flag
和i
。否则,一旦找到合成数字,它将继续将数字视为复合数字。
答案 1 :(得分:1)
在代码中进行以下更改
for(int i = 2; i <= value;i++ )
{
check = 2; flag = true;
while(check <= i/2)
{
if(i%check == 0)
每次fr循环都会运行check的值,并且标志会保留在早期迭代中,因为您将获得此行为