回答編集履歴
6
変更
answer
CHANGED
@@ -17,4 +17,4 @@
|
|
17
17
|
forループは5から先の19までループして終了します。ちょっとだけ効率化するとして yが1になった時点で
|
18
18
|
forループをberakすれば良いかな。
|
19
19
|
|
20
|
-
入力が素数の場合でもforループの回数は入力数の半分で良いのですけれどね。
|
20
|
+
入力が素数の場合でもforループの回数は入力数の半分で良いのですけれどね。
|
5
変更
answer
CHANGED
File without changes
|
4
変更
answer
CHANGED
@@ -15,4 +15,6 @@
|
|
15
15
|
実際20の場合、割切れる2は2回ループして
|
16
16
|
y、が5になった時点で2では割り切れず、forループへ移ります。y/i は次の次の次の5で割り切れます。
|
17
17
|
forループは5から先の19までループして終了します。ちょっとだけ効率化するとして yが1になった時点で
|
18
|
-
forループをberakすれば良いかな。
|
18
|
+
forループをberakすれば良いかな。
|
19
|
+
|
20
|
+
入力が素数の場合でもforループの回数は入力数の半分で良いのですけれどね。
|
3
変更
answer
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
> なぜforの中でさらにwhileで繰り返す必要があるのかわかりません。
|
2
2
|
|
3
|
-
whileは置いといて、for文からですが、素数
|
3
|
+
whileは置いといて、for文からですが、素因数を求める為に、割り算に使う i を2から
|
4
|
-
|
4
|
+
自分の数字の1つ前までのループさせれば良しとしています。もれは無いでしょう。
|
5
|
-
なので
|
6
|
-
for (int i = 2; x > i; i++){ .... }
|
5
|
+
なのでfor (int i = 2; x > i; i++){ .... }
|
7
6
|
|
8
|
-
{...}の中の i は2から始まり1づつインクレメントして自分より1つ小さい時までの回ります
|
9
|
-
からこの i を使って間割り切れるかの判定を行います。(y % i) == 0 の時割り切れる。
|
10
|
-
ここで
|
11
|
-
|
7
|
+
さらにプログラムは素因数分解を求める為に、whileを使っているいます。
|
12
8
|
(整数が、どんな数であっても、素数の積によって表すことができる)
|
13
9
|
|
14
10
|
素因数分解を行うには、順に小さいものから割りまくるです。
|
11
|
+
割り算する数字が同じでも、割り切れている内は何回でも割ります。yは減っていきますけど。
|
15
|
-
例えば 20 の場合2,2,5
|
12
|
+
例えば 20 の場合2,2,5になります。(構成しているのは素数です。)
|
16
13
|
|
14
|
+
これをwhileで実現しています、(割り切れている間は回る)
|
17
|
-
|
15
|
+
実際20の場合、割切れる2は2回ループして
|
18
16
|
y、が5になった時点で2では割り切れず、forループへ移ります。y/i は次の次の次の5で割り切れます。
|
19
17
|
forループは5から先の19までループして終了します。ちょっとだけ効率化するとして yが1になった時点で
|
20
|
-
berakすれば良いかな。
|
18
|
+
forループをberakすれば良いかな。
|
2
変更
answer
CHANGED
@@ -16,4 +16,5 @@
|
|
16
16
|
|
17
17
|
whileは条件がtrueの間はループします、20の場合、割切れる2は2回ループして
|
18
18
|
y、が5になった時点で2では割り切れず、forループへ移ります。y/i は次の次の次の5で割り切れます。
|
19
|
-
forループは5から先の19までループして終了します。
|
19
|
+
forループは5から先の19までループして終了します。ちょっとだけ効率化するとして yが1になった時点で
|
20
|
+
berakすれば良いかな。
|
1
変更
answer
CHANGED
@@ -8,10 +8,10 @@
|
|
8
8
|
{...}の中の i は2から始まり1づつインクレメントして自分より1つ小さい時までの回ります
|
9
9
|
からこの i を使って間割り切れるかの判定を行います。(y % i) == 0 の時割り切れる。
|
10
10
|
ここで
|
11
|
-
素数判定であれば、if ((y % i) == 0)と判定して”素数では有りません”で、終了でも良かったと思いますが、このプログラムは素因数分解
|
11
|
+
素数判定であれば、if ((y % i) == 0)と判定して”素数では有りません”で、終了でも良かったと思いますが、このプログラムは素因数分解を求める為に、whileを使っているいます。
|
12
12
|
(整数が、どんな数であっても、素数の積によって表すことができる)
|
13
13
|
|
14
|
-
|
14
|
+
素因数分解を行うには、順に小さいものから割りまくるです。
|
15
15
|
例えば 20 の場合2,2,5の積になります。(構成しているのは素数です。)
|
16
16
|
|
17
17
|
whileは条件がtrueの間はループします、20の場合、割切れる2は2回ループして
|