Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.
καθως και γιατι το:

>for(j=k=0;j<79;j++)

ειναι εως το 79?:rolleyes:

 

Παρατήρησες ότι στην printf τυπώνει δυο-δυο τα ψηφία, έτσι;

  • Απαντ. 38
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.
Παρατήρησες ότι στην printf τυπώνει δυο-δυο τα ψηφία, έτσι;

LOL ναι 79·2=....:-)

Και κανει τους υπολογισμους με βαση το 100 και οχι το 10, i wonder why. Γλιτωνει χαρακτηρες ετσι?:rolleyes: Μαλλον....

Δημοσ.

>
#include <stdio.h>
main()
{
  int i=101,j,k,A[200]={1};
  while(--i)
  for(j=k=0;j<158;j++)
  k=i*A[j]+k/10,A[j]=k%10,i-1?0:printf("%d",A[157-j]);
}

114 ;)

 

Αρχικά και εγώ το έκανα με βάση το 100

Δημοσ.

Ακόμα να τον καταλάβω καλά τον κώδικα, αλλά μπορεί να γίνει πιο σύντομος κατά 1 χαρακτήρα με τη χρήση του putchar.

>
#include <stdio.h>
main()
{
  int i=101,j,k,A[200]={1};
  while(--i)
  for(j=k=0;j<158;j++)
  k=i*A[j]+k/10,A[j]=k%10,i-1?0:putchar(A[157-j]+48);
}

Δημοσ.

113 :Ο

 

Βασικά αυτό που κάνει είναι να πολλαπλασιάζει όλους τους αριθμούς του πίνακα με έναν αριθμό αλλά αν προκύπτει αριθμός > 9 τότε μεταφέρει το υπόλοιπο στον αρίστερό πίνακα και το προσθέτει

  • 2 εβδομάδες αργότερα...
Δημοσ.

Με την ευκαιρια που ασχοληθηκα χθες με το θεμα των τελικων μηδενικων σε ενα παραγοντικο, θυμηθηκα αυτο που ειπες οποτε for what is worth:

 

100! = 100·99·98·...·3·2·1

Αν δεν κάνω λάθος, ο τελικός αριθμός έχει μόλις 3 μηδενικά στο λιγότερο σημαντικά ψηφία.

 

ΥΓ: Φαίνεται πως έκανα λάθος, είναι αρκετά περισσότερα...

24 εχει.

Ενας ευκολος και γρηγορος τροπος, χωρις να υπολογισουμε το αποτελεσμα του 100!(και γενικα καθε αριθμου Χ!), για να βρουμε ποσα μηδενικα εχει στο τελος ειναι ο εξης:

 

Βρισκουμε εναν αριθμο Α τετοιον ωστε να ισχυει: 5^Α > 100 (γενικα 5^Α > Χ)

Ειναι πιο ευκολο απο οτι φαινεται. Στην περιπτωση μας το Α=3 "μας κανει", αφου 5^3 = 125 ειναι μεγαλυτερο του 100.

Ο αριθμος των μηδενικων του 100 λοιπον ειναι ισος με:

\100/5^1/ + \100/5^2/ + \100/5^3/=

\100/5/ + \100/25/ + \100/125/ = 20 + 4 + 0 = 24

 

Οπου \Χ/Υ/ ειναι το (ακεραιο) πηλικο της ευκλειδιας διαιρεσης Χ προς Υ.

Δημοσ.

Μιάς και το αναστήσαμε το θέμα έφτιαξα ένα script για python το οποίο επιβεβαιώνει αυτό που λες (βαριόμουν να σκεφώ τι λες αλά δεν βαριόμουν να την υλοποίηση :Ρ) Οο

 

Απλά άλλαξε την τιμή του m (default 6005) αν θές να παίξεις.

 

>
import os
def calc(n):
i,z =1,1
while i <= n:
	z *=  i
	i += 1
	os.system(['clear','cls'][os.name == 'nt'])
	print "stage" , i , "of" , n 
return z

def testmodulo(q):
i = 0
print "computing modulo"
while q % 10 == 0 :
	q /= 10
	i += 1
	
return i

def testotherway(q) :
z=5
i=0
print "computiong other way"
while z < q:
	i += (q/z)
	z *= 5
	
return i

m = 6005
h = calc(m)

k = testmodulo(h)

l = testotherway(m)
print h
print k
print l

  • 4 χρόνια αργότερα...
Δημοσ.

Με την ευκαιρια που ασχοληθηκα χθες με το θεμα των τελικων μηδενικων σε ενα παραγοντικο, θυμηθηκα αυτο που ειπες οποτε for what is worth:

 

 

24 εχει.

Ενας ευκολος και γρηγορος τροπος, χωρις να υπολογισουμε το αποτελεσμα του 100!(και γενικα καθε αριθμου Χ!), για να βρουμε ποσα μηδενικα εχει στο τελος ειναι ο εξης:

 

Βρισκουμε εναν αριθμο Α τετοιον ωστε να ισχυει: 5^Α > 100 (γενικα 5^Α > Χ)

Ειναι πιο ευκολο απο οτι φαινεται. Στην περιπτωση μας το Α=3 "μας κανει", αφου 5^3 = 125 ειναι μεγαλυτερο του 100.

Ο αριθμος των μηδενικων του 100 λοιπον ειναι ισος με:

\100/5^1/ + \100/5^2/ + \100/5^3/=

\100/5/ + \100/25/ + \100/125/ = 20 + 4 + 0 = 24

 

Οπου \Χ/Υ/ ειναι το (ακεραιο) πηλικο της ευκλειδιας διαιρεσης Χ προς Υ.

 

Μιας και ασχοληθηκα χθες λιγο με τον αριθμο των ψηφιων των παραγοντικων αριθμων, και θυμηθηκα αυτο το τοπικ με τον τυπο/μεθοδο περι του αριθμου των συνεχομενων μηδενικων που υπαρχουν στο τελος ενος παραγοντικου δινω εναν πραγματικα ενδιαφερον τυπο για τον συνολικο αριθμο των ψηφιων ενος παραγοντικου, πχ του Ν!.

 

Και ενω ο τυπος για τον αριθμο των τελευταιων μηδενικων ψηφιων ισχυει για καθε αριθμο Ν!, ο τυπος για τον συνολικο αριθμο των ψηφιων του Ν! δεν ισχυει για μερικα Ν. Ιδου πως εχει η κατασταση:

 

Ο καλυτερος τυπος αυτη τη στιγμη ειναι ο:

digitsoffactorial_zps62d8337c.png

 

Οπου Floor[a] ειναι το ακεραιο μερος του α, πχ Floor[14.01] = 14 , Floor[14.223] = 14 , Floor[7.982] = 7 ενω οπου ln(a) ειναι ο νεπεριος λογαριθμος του a.

 

Ο τυπος αυτος ειναι μια βελτιωση του προηγουμενου τυπου που ισχυε για ολους τους αριθμους Ν(εβρισκε δηλαδη ΕΠ ΑΚΡΙΒΩΣ απο πόσα ψηφια αποτελειται ο Ν!) απο το 1 εως το 6561101970382(για τους πρωτους περιπου 6.5 τρισεκατομμυρια φυσικους αριθμους!!), δηλαδη εβρισκε ΕΠ ΑΚΡΙΒΩΣ απο πόσα ψηφια αποτελουνται ολοι οι αριθμοι 1!, 2!, 3!,..., 6561101970382! ενω για τον 6561101970383! αποτυγχανε! Μετα βεβαια για τον 6561101970384! και παλι εβρισκε επ ακριβως τον αριθμο των ψηφιων του, οπως και για τους επομενους πολλους πολλους αριθμους τα εβρισκε, εως και τον επομενο που αποτυγχανει(που ειναι της ταξης των 10^15 και που δεν τον εχουμε βρει ποιος ειναι ακομα).

 

Ενα εντυπωσιακο "φαινομενο" θα μπορουσε να πει καποιος και που κανει καποια εντυπωση καθως το να βρεις εναν τυπο που προβλεπει το πόσα ψηφια θα εχει ο Ν! και ο τυπος να ισχυει για Ν=1 αλλά και 2 και 3 εως και τους 10000 πρωτους(τη ταξη και οχι πρωτους με την μαθηματικη εννοια) φυσικους αριθμους ειναι εκπληκτικο και ισως πεις(εαν δεν εχεις μαθηματικη εμπειρια) οτι ο τυπος ισχυει για ολους τους αριθμους. Πόσο μαλλον ενα προχωρησεις και μετα απο μηνες υπολογισμων βρεις οτι ο τυπος σου ισχυει για ΟΛΟΥΣ τους πρωτους(τη ταξη) 6.5 τρισεκατομμυρια φυσικους αριθμους!! Πλεον(καποιος απειρος περι αυτων) θα μπορουσε να ισχυριστει με σιγουρια οτι ισχυει για καθε φυσικο αριθμο! Ομως οπως βλεπουμε και απο αυτο το παραδειγμα, υπαρχει καποιος αριθμος, ο 6561101970383 φυσικος αριθμος, που σπαει τον τυπο σου!

 

Παραδειγματα σαν και αυτο στα μαθηματικα υπαρχουν αφθονα(το πιο γνωστο: Skewes' number) οπου ενας τυπος δουλευει για ολους τους φυσικους αριθμους εως και καποιον τεραστιο αριθμο και μετα ξαφνικα βρισκεται καποιος αριθμος που σπαει την συμμετρια και τα καταστρεφει ολα. Στην εικασια του Riemann εικαζεται οτι το πρωτο αντιπαραδειγμα, αν υπαρχει, θα βρισκεται πολυ πολυ πολυ πολυ μακρια απο τις υπαρχουσες δυνατοτητες των υπολογιστων και ειναι ασκοπο να ψαχνουμε αντιπαραδειγμα για αυτην.

 

Τελοσπαντων οπως ειπα ο προηγουμενος καλυτερος τυπος για να βρισκουμε επ ακριβως τον αριθμο των ψηφιων του Ν! δουλευει για ολους τους αριθμους Ν απο το 1 εως το 6561101970382.

Ο βελτιωμενος τυπος που δωθηκε πιο πανω ομως δουλευει και για το 6561101970383! και για τους επομενους αριθμους ως το 10^15 καθως και εικαζεται οτι δουλευει για αριθμους Ν της ταξης 10^30(για αριθμους δηλαδη της ταξης (10^30)!, 10^30 ΠΑΡΑΓΟΝΤΙΚΟ δηλαδη!!) και δεν εχουμε φυσικα ανακαλυψει κανενα αντιπαραδειγμα, ενω βεβαια ειναι σαφες οτι υπαρχει αυτο.

 

Με τον παραπανω τυπο λοιπον αν θεσουμε Ν = 12 παιρνουμε το αποτελεσμα 9.

Και προφανως αφου ισχυει 12! = 479 001 600

Ενω αν θεσουμε Ν = 78 456 689 παιρνουμε το αποτελεσμα 585 313 227

Δηλαδη ο αριθμος 78 456 689! εχει 585 313 227 ψηφια.

 

Θετοντας Ν = 6561101970383 (τον αριθμο που ο προηγουμενος τυπος αποτυγχανε) παιρνουμε αποτελεσμα 81244041273654.

Δηλαδη ο αριθμος 6561101970383! εχει 81 244 041 273 654 ψηφια(81 τρισεκατομμυρια).

Ο προηγουμενος σωστος τυπος που ξεραμε εδινε οτι εχει 81 244 041 273 653 ψηφια, δηλαδη ενα μολις λιγοτερο. Μπορει να φαινεται ασημαντο αλλά το λαθος ειναι λαθος.

  • Like 5

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...