让程序输出100以内素数
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// int n = in.nextInt();
for(int n = 2;n < 100; n++)
{
int isPrime = 1;
for (int i = 2; i < n ; i++ )
{
if(n % i == 0)
{
isPrime = 0;
break;
}
}
if( isPrime == 1)
{
System.out.print(n+" ");
}
else
{
// System.out.println(n+"不是素数");
}
}
}
}
错:
1、放在for循环之外,导致输出2 3
int isPrime = 1;
注:
1、for里面还有for,叫做多重循环/嵌套循环
多重循环/嵌套循环
例1
for ( int n1 = 0; n1<10 ; ++n1 )
{
for (int n2 = 0; n2 <50; ++n2)
{
System.out.println(n1+":"+n2);
}
}
例2(99乘法表)
for ( int i = 1; i <= 9 ; i++ )
{
for (int j = 1; j <= 9; j++)
{
System.out.println("\t"+(i*j));
}
System.out.println();
}
里面的循环做更多次
输出前50素数的程序
1.不知道循环次数,for不合适
2.需要有一个数数器
留作作业
凑硬币(枚举,穷举)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int amount = in.nextInt();
for (int one = 0; one <= amount; ++one )
{
for (int five = 0; five <= amount/5; ++five )
{
for (int ten = 0; ten <= amount/10; ++ten )
{
for (int twenty = 0; twenty <= amount/20; ++twenty )
{
if ( one + five*5+ten*10+twenty*20 == amount)
{
System.out.println(one+"张1圆,"+five+"张5圆,"+ten+"张5圆,"+twenty+"张20圆");
}
}
}
}
}
}
}
如果只要一种
用break?麻烦,只能跳出一层循环
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int amount = in.nextInt();
int isExit = 0;
for (int one = 0; one <= amount; ++one )
{
for (int five = 0; five <= amount/5; ++five )
{
for (int ten = 0; ten <= amount/10; ++ten )
{
for (int twenty = 0; twenty <= amount/20; ++twenty )
{
if ( one + five*5+ten*10+twenty*20 == amount)
{
System.out.println(one+"张1圆,"+five+"张5圆,"+ten+"张5圆,"+twenty+"张20圆");
isExit = 1;
break;
}
}
if (isExit == 1)
{
break;
}
}
if (isExit == 1)
{
break;
}
}
if (isExit == 1)
{
break;
}
}
}
}
或者,加个标号
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int amount = in.nextInt();
int isExit = 0;
// 标号,命名下面那个for
OUT:
for (int one = 0; one <= amount; ++one )
{
for (int five = 0; five <= amount/5; ++five )
{
for (int ten = 0; ten <= amount/10; ++ten )
{
for (int twenty = 0; twenty <= amount/20; ++twenty )
{
if ( one + five*5+ten*10+twenty*20 == amount)
{
System.out.println(one+"张1圆,"+five+"张5圆,"+ten+"张5圆,"+twenty+"张20圆");
break OUT;
}
}
}
}
}
}
}
1、break、continue都有用
2、起名任意