質問するログイン新規登録

回答編集履歴

6

変更

2017/08/04 19:29

投稿

A.Ichi
A.Ichi

スコア4070

answer CHANGED
@@ -17,4 +17,4 @@
17
17
  forループは5から先の19までループして終了します。ちょっとだけ効率化するとして yが1になった時点で
18
18
  forループをberakすれば良いかな。
19
19
 
20
- 入力が素数の場合でもforループの回数は入力数の半分で良いのですけれどね。
20
+ 入力が素数の場合でもforループの回数は入力数の半分で良いのですけれどね。

5

変更

2017/08/04 19:29

投稿

A.Ichi
A.Ichi

スコア4070

answer CHANGED
File without changes

4

変更

2017/08/04 16:12

投稿

A.Ichi
A.Ichi

スコア4070

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

変更

2017/08/04 16:12

投稿

A.Ichi
A.Ichi

スコア4070

answer CHANGED
@@ -1,20 +1,18 @@
1
1
  > なぜforの中でさらにwhileで繰り返す必要があるのかわかりません。
2
2
 
3
- whileは置いといて、for文からですが、素数は1と自分以外はれ切れない数字の事ですから
3
+ whileは置いといて、for文からですが、素を求める為に、り算に使う i を2から
4
- 2から自分の数字の1つ前までの数字 i、を使います。
4
+ 自分の数字のつ前までのループさせれば良しとしています。もれは無いでしょう。
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
- 素数判定であれば、if ((y % i) == 0)と判定して”素数では有りません”で、終了でも良かったと思いますが、このプログラムは素因数分解を求める為に、whileを使っているいます。
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
- whileは条件がtrueの間はループします、20の場合、割切れる2は2回ループして
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

変更

2017/08/04 16:04

投稿

A.Ichi
A.Ichi

スコア4070

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

変更

2017/08/04 15:48

投稿

A.Ichi
A.Ichi

スコア4070

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)と判定して”素数では有りません”で、終了でも良かったと思いますが、このプログラムは素因数分解も行たいが為に、whileを使っているのでは?
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回ループして