基本的なプログラミングの質問(6〜10)
06、最大公約数と最小公倍数を見つける
質問:2つの正の整数mとnを入力し、最大公約数と最小公倍数を見つけます。
6.1、プログラム分析
- 最大公約数
2つの数の最大公約数は最小数よりも小さく、2つの数の余りをとった最大公約数の結果は0です。 - 最小公倍数
1、最小公倍数は、2つの数値を最大公約数で割った積です。
2.最小公倍数は最大数より大きく、2つの数の積より小さく、最小公倍数に対する2つの数の余りは0です。
6.2、コードの実装
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入两个数m和n:");
int m = input.nextInt();
int n = input.nextInt();
// 判断两数的大小
int min = m > n ? n : m;
int max = m > n ? m : n;
// 输出最大公约数和最小公倍数
for (int i=min; i > 0; i--) {
if (m % i == 0 && n % i == 0) {
System.out.println("最大公约数是:" + i);
System.out.println("最小公倍数是:"+(n*m)/i);
break;
}
}
}
}
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入两个数m和n:");
int m = input.nextInt();
int n = input.nextInt();
// 判断两数的大小
int min = m > n ? n : m;
int max = m > n ? m : n;
// 输出最大公约数
for (int i=min; i > 0; i--) {
if (m % i == 0 && n % i == 0) {
System.out.println("最大公约数是:" + i);
break;
}
}
// 输出最小公倍数
for (int i = max; i <= n * m; i++) {
if (i % m == 0 && i % n == 0) {
System.out.println("最小公倍数是:" + i);
break;
}
}
}
}
6.3、理科教室
最大公約数
最大公約数、または最大公約数とも呼ばれる最大公約数は、2つ以上の整数で共有される最大公約数を指します。a,b
の最大公約数はとして記録され(a,b)
、同様にa,b,c
、最大公約数はとして記録され(a,b,c)
、複数の整数の最大公約数も同じ符号を持ちます。最大公約数を見つける方法はたくさんありますが、一般的な除数は次のとおりです。素因数分解法、短除算法、トスアンドターン除算法、より多くの位相減算法。
詳細な住所分析:最大公約数-Baidu百科事典
最小公倍数
2つ以上の整数に0
共通の倍数はそれらの共通倍数と呼ばれ、それを除いて最小公倍数はこれらの整数の最小公倍数と呼ばれます。整数のa,b
最小公倍数はとして記録され[a,b]
、同様にa,b,c
、最小公倍数はとして記録され[a,b,c]
、複数の整数の最小公倍数も同じ符号を持ちます。
解決策は素因数分解法、式法。
詳細な分析アドレス:最小公倍数-Baidu百科事典
07.文字列の簡単な処理
トピック:文字の行を入力し、英字、スペース、数字、その他の文字の数を数えます。
7.1、プログラム分析
実現のアイデア
- 各文字の数を数えるために、長さが256(0〜255)の配列を定義します。
- 配列の添え字に対応する文字数。
- 統計の数を出力します。
7.2、コードの実装
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入字符串:");
String str = input.nextLine();
// 1、定义计数数组
int[] count = new int[256];
// 2、统计字符个数
for (int i = 0; i < count.length; i++) {
for (int j = 0; j < str.length(); j++) {
if (i == str.charAt(j)) {
count[i]++;
}
}
// 3、打印结果
if (count[i] > 0) {
System.out.print((char) i + "的个数: " + count[i] + "\n");
}
}
}
}
7.3、理科教室
7.3.1、next()とnextLine()の違い
Java
Scanner
クラス内のメソッドnext()
とnextLine()
は、入力文字の入力ステージを描画しています。違いは次のとおりです。
-
next()
Tab
文字の前後のスペース/キーを吸収せず、文字のみを吸収し、スペース/Tab
キーに遭遇するまで文字の吸収を開始し(文字はカウントされません)、吸収を停止します。 -
nextLine()
文字の前後のスペース/Tab
キーを吸収し、キーを入力してください締め切り。
08、s = a + aa + aaa + aaaa + aa…a
質問:s = a + aa + aaa + aaaa + aa ... aの値を見つけます。ここで、aは数値です。たとえば、2 + 22 + 222 + 2222 + 22222(この時点では5つの数字が加算されます)、およびいくつかの数字の加算はキーボードによって制御されます。
8.1、プログラム分析
この質問は、「文字」と「数字」の2つの側面から考えることができます。
- aを文字として扱います。
実現のアイデア
1.繰り返し数[1-9]を
入力してください2.繰り返し加算の数を入力してください
3.数が修飾されているかどうかを判断し、再入力してください
4.合計変数を定義します
5 。定義毎回文字列の数を繰り返します
6.出力文字列を出力します - aを数として扱います。
実現のアイデア
1.繰り返し数[1-9]を
入力してください。2。繰り返し加算の数を入力してください
。3.22= 210の1乗+2; 222 = 210の2乗+22 2222 = 210の3乗+222
ルール:現在のn桁目は2 10の(n-1)乗+前の数値
に等しい4.合計変数int sum = 0を定義します。
8.2、コードの実装
aを文字として扱う
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num;
int n;
do {
//1.请输入重复的数字[1-9]
System.out.println("请输入重复的数字[1-9]:");
num = input.nextInt();
//2.请输入重复相加的个数
System.out.println("请输入重复相加的个数:");
n = input.nextInt();
} while (num < 1 || num > 9);//3.判断数字是否合格,不合格重新输入
//4.定义求和变量
int sum = 0;
//5.定义每次的重复数字串
String temp = "";
//6.打印输出的字符串
String str = "";
for (int i = 0; i < n; i++) {
temp +=""+num;
sum += Integer.valueOf(temp);
if(i<n-1)
str+=temp+"+";
else
str+=temp;
}
System.out.println(sum+"="+str);
}
}
aを数として扱う
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num;
int count;
do {
//1.请输入重复的数字[1-9]
System.out.println("请输入重复的数字[1-9]:");
num = input.nextInt();
//2.请输入重复相加的个数
System.out.println("请输入重复相加的个数:");
count = input.nextInt();
} while (num < 1 || num > 9);//3.判断数字是否合格,不合格重新输入
//4.定义求和变量
int sum = 0;
int temp = num;
for (int i = 1; i <=count; i++) {
if(i<count)
System.out.print(temp+"+");
else
System.out.print(temp);
sum += temp;
temp = num * (int)Math.pow(10, i)+temp;
}
System.out.println("="+sum);
}
}
09、番号の終わり
質問:数がそのすべての要素の合計に正確に等しい場合、この数は「完全な数」と呼ばれます。たとえば、6 = 1 + 2 +3です。1000内のすべての数値を検索するようにプログラムします。
9.1、プログラム分析
- アイデアを実現する
1.数値numのすべての要素を見つけて、それらを合計します(合計)
2。numと合計を比較します
9.2、コードの実装
public class Test {
public static void main(String[] args) {
int sum;
for (int i = 1; i <= 1000; i++) {
sum = 0;
for (int j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (i == sum) {
System.out.println(i);
}
}
}
}
10.自由落下の高さ
質問:ボールは100メートルの高さから自由に落下し、着地するたびに元の高さの半分に跳ね返ります。ボールが再び落下した場合、10回目に地面に着いたときに何メートル移動しますか。10回目のリバウンドはどのくらいですか?
10.1プログラム分析
- 実装のアイデア
1.ループを定義します。ループの数はリバウンドの数です
。2。中間変数、各リバウンドの高さを定義します。
10.2コードの実装
public class Test {
public static void main(String[] args) {
double height=100;//高度
double temp = 0;
double sum = height;//物体落体时经过的路程
for (int i = 0; i < 10; i++) {
sum += temp * 2;
temp = height / 2.0;
height = temp;
}
System.out.println("第" + 10 + "次落地时,共经过" + sum + "米,第" + 10 + "次反弹" + temp + "米。");
}
}