リアルタイムで4分の1秒を要しないにもかかわらず、このプロセスが終了するまでに最大5秒かかります。ストップウォッチが正確な時刻を報告していません
ストップウォッチに特に関連するコードを太字にして、あなたがそれをすべて見る必要がないようにします。これは初めての投稿なので親切にしてください。不器用な場合はごめんなさい。コードが太字になっていない場合は、問題の部分の周りに**が表示されます。
*バックグラウンド:これは数学のエッセイです。それは素因を見つけ、それを見つけるのにどれくらい時間がかかるかを示すプログラムでなければなりません。それは素因を見つけることに取り組んでいるが、ストップウォッチは数秒でばかげた数字を報告している。また、このコードは、最も頻繁にストップウォッチ、ユーザの入力機能、および反復と
http://www.geeksforgeeks.org/print-all-prime-factors-of-a-given-number/
の影響を受けているが、私自身の考えによって、または他人の助けを借り*
// Program to print all prime factors
import java.io.*;
import java.lang.Math;
import java.util.Scanner;
import java.text.DecimalFormat;
class primeFactorer4
{
**static long startTime = System.nanoTime();**
// A function to print all prime factors
// of a given number n
public static void primeFactors(long n)
{
// Print the number of 2s that divide n
while (n%2==0)
{
System.out.print(2 + " ");
n /= 2;
}
// n must be odd at this point. So we can
// skip one element (Note i = i +2)
for (int i = 3; i <= Math.sqrt(n); i+= 2)
{
// While i divides n, print i and divide n
while (n%i == 0)
{
System.out.print(i + " ");
n /= i;
}
}
// This condition is to handle the case whien
// n is a prime number greater than 2
if (n > 2)
System.out.print(n);
}
public static void main (String[] args)
{
Console console = System.console();
String input = console.readLine("Enter input:");
long n = Long.valueOf(input);
for (int k=1; k<=10; k++)
{
primeFactors(n);
System.out.println(" Try " + k);
}
**double endTime = System.nanoTime();
double totalTime = endTime - startTime;
DecimalFormat totalTimeFormat = new DecimalFormat("##.###");
System.out.println(" Time taken in seconds:" + totalTimeFormat.format(totalTime/10/1000000000));**
primeFactorer4.main(args);
//reason for the weird division is for clarity. "totalTime" is the time surpassed
//to repeat all the methods, the "10" in the middle is to get the mean total time
//of all the primeFactors cycles, and the "1000000000" at the end is to convert nanoseconds into seconds
}
}
理由でいずれかに添加されています私がprimeFactorsに10回電話をかけたのは、私のコンピュータが私のために結果の平均を出したかったからです。なぜなら、どの学校からも実験をすると、より正確なIVレベル3(またはそれ以上)結果
あなたはいつもメソッドを 'for'ループに張り、コードをきれいにすることができます。 – UghThatGuyAgain
コンピュータの数学は科学的な実験ではありません。それを10回呼び出すのは無意味です。 –
これはすべての実験ではありません。私はこの結果を、数の大きさと素因数を見つけるための時間とに関連させたグラフに入れていました。そして、私の先生が教えてくれた回帰直線を見つけることは、それを数学に関連させるために最低限必要でした。私の主題は主な要素であり、エッセイとして興味深い主要因を暗号化について論じるときに私が知っている唯一の方法です。 – regazzo