2016-04-09 26 views
-3

Sagen, ich habe die Nummer 12345678Zahlen hinzufügen in einer Reihe zusammen

Gibt es eine rechnerisch effiziente Weise der Addition von 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 und bekommt die Antwort zurück

Im Idealfall würde ich Division und Parsen String vermeiden, wie ich

etwas effizienter, wenn möglich will

EDIT:

der Zweck dieser Frage einen rechnerisch schnellen Weg zu finden, ist zu det Hermelin, wenn eine Zahl von 3 teilbar ist, oder die Last der Zahl auf das Modul

Es gibt eine Methode, die besagt, zugeführt zu reduzieren, wenn Sie alle Ziffern in einer Reihe hinzufügen, kann das Ergebnis dann durch 3 geteilt werden um zu prüfen, ob es ein Faktor ist. So auf diese Weise statt 12345678 zu prüfen, wäre es zu prüfen, ob 36 ein Faktor ist

So wäre es Zähler intiuative sein, um die ganze Zahl von 10 zu teilen, 100 ... usw. sowie Strings zu verwenden

+0

Sie möchten also alle Ziffern zusammen hinzufügen? – Tunaki

+0

ja, aber ich möchte es so effizient wie möglich, so dass keine Divisionen und keine Analyse wenn möglich, wie dieser Algorithmus wird Tausende von Mal durchgeführt und jedes winzige Bit macht einen Unterschied – Gabrielus

+0

Sie können nicht * this * auf Code Review. Es gibt keinen Code. – nhgrif

Antwort

1

Keine Parsing zu String.

int sum=0; 
while(n>0) 
{ 
    sum += n%10; // add the last digit 
    n/=10; // remove the last digit. 
} 
+0

Oh ja, aber er will die Trennung vermeiden. –

+0

Nein, @ ĐăngKhoaHuỳnh, er will etwas so effizient wie möglich und er irrt sich vielleicht in der Annahme, dass die Teilung nicht der effizienteste Weg ist. – nhgrif

+0

Also gibt es keine Möglichkeit, die Ziffern zu trennen, ohne Division zu verwenden? – Gabrielus

Verwandte Themen