一、遍历 100 以内的奇/偶数并求和
1.1 奇数
public class Print100_Jishu {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 != 0){
sum += i;
System.out.println(i);
}
}
}
}
1.2 偶数
只需要把判断条件修改就行了
二、打印九九乘法表
思路:
- 外层循环控制行,内层循环控制列
- 内层循环一轮结束后换行
public class Print99 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i + "*" + j + "=" + i*j + "\t");
}
System.out.println(); // 换行
}
}
}
三、水仙花数
输出所有的水仙花数
所谓的水仙花数,是指一个3位数,其各个位置上的数字立方和等于其本身
注意获取个位、十位、百位的方法
public class Homework2_flower {
public static void main(String[] args) {
System.out.println("所有的水仙花数如下:");
for (int i = 100; i <= 999; i++){
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i /100;
int sum = ge*ge*ge + shi*shi*shi + bai*bai*bai;
if (i == sum){
System.out.print(i + "\t");
}
}
}
}
四、打印质数
打印质数实现方式一
- 输出 100 以内的所有质数
- 思路:
- 0 和 1 既不是质数也不是合数
- 外层循环范围:2 - 100
- 内层循环范围:2 - (这个数-1)
- 外置 flag,标记是否为质数
- 判断 flag 并输出
- 重置 flag
public class ZhiShu_1_1 {
public static void main(String[] args) {
// 质数标记,默认是质数(这样未经改变的话可以直接输出)
boolean flag = true;
System.out.println("100以内的质数有:");
for (int i = 2; i <= 100; i++) {
for (int j = 2; j < i; j++){ // 2 到 (这个数 - 1)
if (i % j == 0){
flag = false;
}
}
if (flag){
System.out.print(i + "\t");
}
// 重置 flag
flag = true;
}
}
}
优化:
- 每次判断为非质数后,不仅更改 flag,而且直接 break
- 内层循环比较次数改为 i的平方根
public class ZhiShu_1_2 {
public static void main(String[] args) {
boolean flag = true;
System.out.println("100以内的质数有:");
for (int i = 2; i <= 100; i++) {
for (int j = 2; j <= Math.sqrt(i); j++) { // 优化二:内循环范围为根号,且小于等于
if (i % j == 0) {
flag = false;
break; // 优化一:已经确定不是质数,后面的不用判断
}
}
if (flag) {
System.out.print(i + "\t");
}
flag = true;
}
}
}
打印质数实现方式二
- 借助 label 标签,指明 break 与 continue 的作用点
public class ZhiShu_2 {
public static void main(String[] args) {
label://创建标签,指明break或continue的作用位置
for (int i = 2; i <= 100; i++) {
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
continue label; // 不是质数时,跳出本次循环
}
}
System.out.print(i + "\t");
}
}
}
封装成一个方法:
// 打印 bound 内的所有质数
public static void printZhiShu(int bound) {
label: // label标签,指明break与continue的作用位置
for (int i = 2; i <= bound; i++) { // 0和1既不是质数也不是合数
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0){
continue label; // 如果不是质数跳出本轮循环
}
}
System.out.println(i);
}
五、完全数
- 定义:一个数如果恰好等于它的因子之和,就称这个数为完全数;
- 例子:6 = 1 + 2 + 3
- 要求:输出 1000 以内所有的完全数
public class Homework_Yinzi {
public static void main(String[] args) {
// 初始化因子之和
int sum = 0;
for (int i = 2; i <= 1000; i++) {
for (int j = 1; j <= i/2; j++) {
if (i % j == 0){
sum += j;
}
}
if (sum == i){
System.out.println(i);
}
// 重置sum
sum = 0;
}
}
}