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

質問編集履歴

3

if elseの条件更新

2020/12/14 16:03

投稿

cha-
cha-

スコア6

title CHANGED
File without changes
body CHANGED
@@ -67,6 +67,9 @@
67
67
  protected void compute() {
68
68
 
69
69
  BigInteger diff = max.subtract(i);
70
+ //Random()の可能なシード値をループしてnを因数分解し、そこからpを作成して(pをテストするだけでよいので、qは必要ありません)、pを因数としてテストします。
71
+
72
+
70
73
  if (diff.compareTo(THRESHOLD)<0) {
71
74
 
72
75
  // max 未満の各素数をループし、n を除算するかどうかを確認します。 その場合は、見つ
@@ -77,7 +80,7 @@
77
80
  ForkJoinRsaTask(i,n,max);
78
81
 
79
82
  }
80
- else {
83
+ else {//それが機能しない場合
81
84
 
82
85
  //リストを半分に切り、2 つの半分に対して ForkJoinRsaTask を呼び出します(マルチスレ
83
86
  ッドクイックソートと同様)

2

自分で試したことと、質問内容を更新

2020/12/14 16:03

投稿

cha-
cha-

スコア6

title CHANGED
File without changes
body CHANGED
@@ -68,18 +68,23 @@
68
68
 
69
69
  BigInteger diff = max.subtract(i);
70
70
  if (diff.compareTo(THRESHOLD)<0) {
71
- //コード入れたい
71
+
72
72
  // max 未満の各素数をループし、n を除算するかどうかを確認します。 その場合は、見つ
73
73
  かった値を出力し、システムを終了してすべてのスレッドを終了します
74
74
  //ループを通過するたびに、BigIntegernextProbablePrime メソッドを使用してテストする
75
75
  次の値を選択します
76
-
76
+ int i=0,n=0,max=0;
77
+ ForkJoinRsaTask(i,n,max);
77
78
 
78
79
  }
79
80
  else {
80
- //コードを入れたい
81
+
81
82
  //リストを半分に切り、2 つの半分に対して ForkJoinRsaTask を呼び出します(マルチスレ
82
83
  ッドクイックソートと同様)
84
+ List<ForkJoinRsaTask> folkjoinrsatask=new ArrayList<ForkJoinRsaTask>();
85
+ folkjoinrsatask.add(0);
86
+ folkjoinrsatask.add(1);
87
+ List<ForkJoinRsaTask> sbList = folkjoinrsatask.subList(1, 3);
83
88
 
84
89
  }
85
90
  }
@@ -87,8 +92,9 @@
87
92
 
88
93
 
89
94
 
90
- //FILL IN THIS CODEの下に
95
+ computeメソッドで、
91
96
 
92
- どういう風にForkJoinRsaTask呼び出しで開始範囲が狭くなるようにし(たとえば、20000など)、これをループして範囲最大までカバーし、
97
+ max 未満各素数をループし、n 除算するかどうかを確認ます。 その場合は見つ
93
-
94
- else条件をどのように表現しようっていま
98
+ かった値を出力し、システムを終了してすべてのスレッドを終了し、
99
+ ループを通過するたびに、BigIntegernextProbablePrime メソッドを使用してテストするために値を選択し、無理ならelseでリストを半分に切り、2 つの半分に対して ForkJoinRsaTask を呼び出します(マルチスレ
100
+ ッドクイックソートと同様)にはどうしたらいいのかわかりません。(私のコードだとエラーが出ます。)

1

和訳

2020/12/14 15:59

投稿

cha-
cha-

スコア6

title CHANGED
File without changes
body CHANGED
@@ -38,16 +38,16 @@
38
38
  BigInteger max = TWO.pow(calcBitLength+1).subtract(BigInteger.ONE);
39
39
  System.out.println("bitLength="+calcBitLength+ ",\n max="+max);
40
40
 
41
- // attempt to factor n
41
+ // nを因数分解しようとします
42
- // BigInteger i = n.sqrt();
42
+ // BigInteger i = n.sqrt();
43
43
  BigInteger i = n.multiply(n);
44
44
  System.out.println("initial i="+i);
45
45
 
46
46
  ForkJoinPool fjPool = new ForkJoinPool();
47
47
 
48
- // after getting the ForkJoinRsaTask working, put the following lines in a loop
48
+ // ForkJoinRsaTaskを機能させた後、次の行をループに入れます
49
- // to incrementally attack a smaller range of the search space, maybe 1000 or 20000...
50
- // You could play around with the size to see what works best
49
+ //検索スペースのより狭い範囲(おそらく1000または20000)を段階的に攻撃します。
50
+ //サイズをいじって、何が最適かを確認できます
51
51
  ForkJoinRsaTask forkJoinRsaTask = new ForkJoinRsaTask(n, i, max);
52
52
  fjPool.invoke(forkJoinRsaTask);
53
53
  }
@@ -68,15 +68,19 @@
68
68
 
69
69
  BigInteger diff = max.subtract(i);
70
70
  if (diff.compareTo(THRESHOLD)<0) {
71
- //FILL IN THIS CODE
71
+ //コード入れたい
72
- // loop through each prime less than max and see if any divide n. If so, print the found value, and do a system exit to end all threads
72
+ // max 未満の各素数をループし、n を除算するかどうかを確認します。 その場合は、見つ
73
+ かった値を出力し、システムを終了してすべてのスレッドを終了します
73
- // each time through the loop, select the next value to test by using the BigInteger nextProbablePrime method
74
+ //ループを通過するたびに、BigIntegernextProbablePrime メソッドを使用してテストする
75
+ 次の値を選択します
74
76
 
75
77
 
76
78
  }
77
79
  else {
78
- //FILL IN THIS CODE
80
+ //コードを入れたい
79
- //Cut the list in half, and call ForkJoinRsaTask for the two halves (similar to multithreaded quicksort)
81
+ //リストを半分に切り、2 つの半分に対して ForkJoinRsaTask を呼び出します(マルチスレ
82
+ ッドクイックソートと同様)
83
+
80
84
  }
81
85
  }
82
86
  }