一. 求1-100之间的素数
方法一:通俗易懂法 根据素数的特性去筛选
public void test2() {
int count = 0;//定义个数
boolean flag = true;//定义一个布尔值进行判断
//100以内最小的素数是2 所以从2开始遍历
for (int i = 2; i <= 100; i++) {
for (int j = 2; j < i; j++) {
if (i % j == 0) {
// 整除 不是素数
flag = false; //所以flag赋值false
break;
} else {
flag = true;
}
}
if (flag) {
//flag为true 即为素数
count++;
}
}
System.out.println("素数个数为"+count);
}
方法二:暴力枚举法 效率高
public void test1() {
int count = 0;
// 外层循环遍历被除数i(因为1既不是素数也不是和数,所以直接从2开始遍历)
for (int i = 2; i <= 100; i++) {
//找 I 的平方根 把遍历范围缩小了一半
for (int j = 2; j < Math.sqrt(i * 1.0); j++) {
if (i % j == 0) {
// 如果整除说明不是素数
break;
}
}
if (j > Math.sqrt(i * 1.0)) {
count++;
System.out.println(i);//输出所有素数
}
}
System.out.println("素数的个数为" + count);
}
二. 求 1,1,2,3,5,8,…(斐波纳契数列)找出规律输出前20
从第三个数字开始 每个数字都是前两项之和
public void test2() {
int a = 1,b = 1;
int temp = 0;// 定义个中间量
// 20位 减去前面a b 两位还有18位
for (int i = 1; i <= 18; i++) {
temp = a + b;
a =b; //b 赋值a 变成前面的数
b = temp ;// c 赋值给 b 变成后面的数
System.out.print(temp + " ");
}
}
三. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
从键盘输入几个月就打印几个月的兔子总数
程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21…类似 斐波纳契数列
@Test
public void test1() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个月份:");
int month = sc.nextInt();
int sum = 0;// sum 几对兔子
switch (month) {
//从第三个月开始 把前两个月的单独弄出来
case 1:
sum = 1;
System.out.println("第1个兔子有" + sum * 2 + "只");
break;
case 2:
sum = 1;
System.out.println("第1个兔子有" + sum * 2 + "只");
break;
default:
// 从第三个月开始每月生一对
for (int i = 1; i < month - 2; i++) {
sum