文章说明
本篇文章介绍如何使用【循环 】,仅是对自己学习的记录,并没有深入分析每个模块。感谢支持!
题一:
/题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
比如:12和20的最大公约数是4,最小公倍数是60
说明: break关键字的使用/
Scanner scanner = new Scanner(System.in);
System.out.println("请输入两个正整数");
int inPut = scanner.nextInt();
int inPut1 = scanner.nextInt();
//获取 最大 公约数.......
// 第一步:获取两个数中的,最小值
int min = (inPut < inPut1) ? inPut : inPut1;
//System.out.println(min);
//分析:你求最大公约数,可不能超过,其中数的最小值,然后要求最大的,所以 到 着 执行........
for (int i = min; i >= 1; i--) {
if (inPut % i == 0 && inPut1 % i == 0) {
System.out.println("最大公约数:" + i);
break;//一但执行到 break 就跳出循环!
}
}
//获取最小公倍数:
//第一步:获取两数的最大值
int max = (inPut > inPut1) ? inPut : inPut1;
//分析 :范围可以不超过 他们两的乘积。从 最大值,开始执行...
for (int i = max; i <= inPut * inPut1; i++) {
if (i % inPut == 0 && i % inPut1 == 0) {
System.out.println("最小公倍数:" + i);
break;
}
}
题二
// 质数:除了1 和 本身 与其他数 ,除不清的数,就是质数!
/* Scanner scanner = new Scanner(System.in);
int inPut = scanner.nextInt();
boolean z = true;
for (int i = 2; i < inPut; i++) {
if (inPut % i == 0) {
z = false;
}
}
if (z) {
System.out.println(inPut + "质数!");
} else {
System.out.println(inPut + "不是质数!");
}*/
//获取 当前时间的毫秒数....
long start = System.currentTimeMillis();
for (int i = 2; i <= 100000; i++) {
boolean z = true;
// 优化二: Math.sqrt 根号 i ,比较的范围就小了。
for (int j = 2; j <= Math.sqrt(i); j++) { // 相除的
if (i % j == 0) {
z = false;
break; // 优化一:只对本身非质数的自然数是有效的,已经不是质数了,再去除就没意义咯
}
}
if (z == true) {
// System.out.println(i);
}
}
long end = System.currentTimeMillis();
System.out.println("所花费的时间为:" + (end - start));
// // 1 秒 等于 1000 毫秒
//13342
//1157
//112
题三
一个数如果恰好等于它的因子之和,这个数就称为完数”.例如6=1+2+3.
编程找出1000以内的所有完数。(因子:除去这个数本身的其它约数)
for (int i = 1; i <= 10000000; i++) {
int sum = 0;
for (int j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (i == sum) {
System.out.println(i);
}
}