Warum meldet mein Code, dass dieser Vorgang bis zu 5 Sekunden dauert, obwohl er in Echtzeit nicht einmal eine Viertelstunde dauert?Stoppuhr meldet keine korrekte Uhrzeit
Ich werde versuchen, den Code speziell für die Stoppuhr zu bolden, um Sie davon abzuhalten, alles durchzusehen. Sei nett, das ist mein erster Beitrag, also tut es mir leid, wenn es ungeschickt ist. Es sieht so aus, als ob der Code nicht umständlich ist.
* Hintergrund: Dies ist für einen Mathe-Aufsatz. Es soll ein Programm sein, das Hauptfaktoren findet und die Zeit angibt, wie lange es dauert, sie zu finden. Es arbeitet daran, die Hauptfaktoren zu finden, aber die Stoppuhr meldet eine lächerliche Zahl in Sekunden. Auch dieser Code am stärksten beeinflusst von
http://www.geeksforgeeks.org/print-all-prime-factors-of-a-given-number/
mit der Stoppuhr, eine Benutzereingabe-Funktion und Wiederholung hinzugefügt wird entweder durch meine eigenen Gedanken oder mit Hilfe anderer *
// 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
}
}
Der Grund Warum ich 10 Aufrufe an PrimeFactors gemacht habe ist, weil ich wollte, dass mein Computer das Mittel der Ergebnisse für mich macht, da jede Schule Ihnen sagen wird, dass Sie beim Experimentieren Ihre IV Stufe 3 (oder mehr) wiederholen müssen, um genauer zu werden Ergebnisse
Sie können die Methode immer in eine 'for'-Schleife stecken und den Code sauberer machen. – UghThatGuyAgain
Computer Mathe ist kein wissenschaftliches Experiment. Es zehnmal zu nennen ist sinnlos. –
Dies ist nicht das ganze Experiment. Ich habe diese Ergebnisse in ein Diagramm gebracht, das die Größe der Zahl und die Zeit zum Finden der Primfaktoren und dann das Auffinden der Regressionsgerade beschreibt, die mein Lehrer mir gesagt hat, ist das Minimum, das erforderlich ist, um es math related lol zu machen. Mein Thema ist der Primfaktor, und tatsächlich ist der einzige Weg, den ich kenne, um Primfaktoren interessant zu machen, ein Aufsatz, wenn man über Kryptographie spricht. – regazzo