|
|
Autor: |
Thema: Wenn fast alle Zahlen Primzahlen wären........
|
|
|
dr.c.n
(offline)
Newbie

Beiträge: 9
Geschlecht: 
Mitglied seit: 12.10.2009
Deutschland
|
|
Wenn fast alle Zahlen Primzahlen wären........ #1
|
Datum: 22.10.2009, 08:49
|
Hallo und eine dringende Bitte um Hilfe:
Ich bin Mediziner und gehe als Naturwissenschaftler anders an Probleme heran. Ich versuche ein System zu beschreiben, Vermutungen aufzustellen und dann durch gezielte Veränderung von Einflußgrößen zu sehen, ob die Vermutungen stimmen...
Das scheint bei der Verteilung der Primzahlen nur sehr bedingt möglich zu sein.
Trotzdem will ich Sie alle zu "experimentieren" verführen:
Ich habe meine Gedanken zur Verteilung der Primzahlen über eine Beschreibung der möglichen Produkte (zusammengesetzte Zahlen) bereits an anderer Stelle in diesem Forum veröffentlicht. Herauskam ein einfaches Programm, welches die zahl der Primzahlen in einem Invall von 0 bis n exakt berechnet. Dabei braucht das Programm nur die Kenntnis der Primzahlen bis Wurzel n.
Der Algorithmus ist ein einfacher:
Es werden nur ungerade Zahlen betrachtet (die Primzahl 2 fließt in das Ergebnis am Ende einfach als +1 ein.
Es werden zunächst die ungeraden Produkte mit einem Primteiler 3 berechnet (# der ungeraden Zahlen bis n / 3)
Es werden dann die ungeraden Produkte mit einem Primteiler 5 berechnet Abzuziehen ist die Zahl der Produkte die durch 3 und 5 geteilt werden können, da alle Produkte mit dem Primteiler 3 ja bereits im ersten Schritt gezählt worden sind.
Das wiederholt sich entsprechend bis als höchste Zahl Wurzel n abgearbeitet ist.
Hier noch einmal das Programm (freebasic):
dim shared a(100000000) As byte Rem to look at number up to 10^12 dim shared t As ulongint dim shared u As ulongint dim shared s As double Rem not really needed just For timing dim shared maxi As ulongint Rem not really needed just to check On highest prime used in table a(I)
Rem noofprod = number of products up to x with divisor <=i Rem noofprim = number of primes <= x
Declare Function noofprod ( x As ulongint, i As ulongint ) As ulongint Declare Function noofprim (x As ulongint )As ulongint Function noofprod ( x As ulongint, i As ulongint ) As ulongint dim m As ulongint dim n As ulongint dim k As ulongint Rem If i is not prime search Next lower prime unless it is 3 Do while i*(2*i+2)> x And i>1 i=i-1 loop Do while a(i)=0 Rem two statements For sqr(x) comes up with numbers much to high i=i-1 loop If maxi<i Then maxi=i EndIf Rem If i=2 it is easy If i=1 Then x=int((x-1)/3) return x Else n=int((x-1)/3) Rem all numbers For devisor 3 For k=2 to i If a(k)=1 Then Rem If k is prime m= int((x-k)/(2*k+1)) Rem all numbers For prime devisor k n=n+m-noofprod(m,(k-1)) Rem - all numbers that have a devisor smaller than prime k n=n- k+noofprod(k,(k-1))+1 Rem the correction to the diagonal of the table EndIf Next k x=n return x EndIf End Function
Function noofprim ( y As ulongint)As ulongint dim l As ulongint l = int((y-1)/2) Rem l is # of odd numbers return (l-noofprod(l,int((sqr(y)-1)/2))+1) Rem +1 is correction For even prime number 2 End Function
For t= 1 to 100000000 Rem the Next two For Next loops a(t)= 1 Rem setup the infomation On primes Next t Rem information As odd numbers Rem therefore primes are up to For t=1 to 10000 Rem 200.000.001 If a(t)=1 Then Rem theoretically calculations are For u=t+2*t+1 to 100000000 step 2*t+1 Rem possible For numbers of primes a(u)=0 Rem up to 40.000.000.000.000.000 Next u Rem = 10^16 Print t Rem not needed Rem but calculation will take long EndIf Rem Program is about factor 15-20 Next t Rem slower than ecprime.exe
Do while u>0 input "(0=end) Calculate # of Primes up to: ", u If u=0 Then End EndIf s=Timer Print noofprim (u), maxi Print "time: ";Timer-s;" sec" loop
(bitte auf zeilenumbruch achten!!!!!!!)
Die Kenntnis der Primzahlen ist im array a() abgespeichert, es wird einfach im Sinne eines Siebes des Eratosthenes erzeugt, es ist als array der ungeraden Zahlen gespeichert. 1 bedeutet Primzahl, 0 ist zusammengesetzt. Für die Primzahl 13 steht also im array a(6)=1, die 15 ist a(7)=0.
Jetzt geht es zum Experiment:
Verändern wir doch einfach das array, lassen wir fast alle Zahlen Primzahlen sein.
Dies ist am einfachsten zu bewerkstelligen, wenn wir ds Sieb des Eratosthenes zum Beispiel mit der 3 laufen lassen.
Die Zeile : For t=1 to 10000 Rem 200.000.001
muss dazu nur verändert werden in:
For t=1 to 1 Rem 200.000.001
Jetzt sind alle Zahlen für das Programm prim bis auf die Vielfachen von 3.
Das Ergebnis ist für mich von entscheidender Erkenntnis:
Im Folgenden steht Primzahlen für die Anzahl der Zahlen bis n, die nicht als Produkte mit der Funktion erklärt werden können.
Das Programm berechnet jetzt bis zu einer Zahl n weniger Primzahlen, aber mit steigendem n steigt die Anzahl der Primzahlen.
Es findet sich sogar zwischen in jedem Intervall n+n und n*(n+1) eine Primzahl......
ich bitte dringend um Kritik!!!!!!!!!!!
Dr. Carsten Neumann
|
|
dr.c.n
(offline)
Newbie

Beiträge: 9
Geschlecht: 
Mitglied seit: 12.10.2009
Deutschland
|
|
Re: Wenn fast alle Zahlen Primzahlen wären........ #2
|
Datum: 22.10.2009, 16:30
|
Habe bei http://en.wikipedia.org/wiki/Legendre_sieve praktisch diese Funkion gefunden. Hier ist sie nur negativert: noofprod (n,i) berechnet die Anzahl der Zahlen, die mindestens einen Primteiler <=i haben während: "S(A,P) is the count of numbers in A with no factors common with P". Habe zu diesem Thema aber bisher keinen anderen source code gefunden.
Für jede Antwort bin ich dankbar!!!!!
|
|
rifischer
(offline)
Junior Member
 
Beiträge: 36
Geschlecht: 
Mitglied seit: 02.08.2006
Schweiz
|
|
Re: Wenn fast alle Zahlen Primzahlen wären........ #3
|
Datum: 25.10.2009, 22:05
|
Hallo Dr. Carsten Neumann
> Es findet sich sogar zwischen in jedem Intervall n+n und n*(n+1) eine Primzahl......
Soweit mir bekannt ist, ist es mathematisch bewiesen, dass es mindestens eine Primzahl im Intervall n und 2*n gibt. Mehr über heute bekannte Extremlücken (vollständig bis 1.5E+18) kann man finden unter: http://www.trnicely.net/index.html#TPG
Über Ihr Thema mit dem "Legendre sieve" habe ich mich noch nie näher auseinandergesetzt.
Gruss rifischer
|
|
dr.c.n
(offline)
Newbie

Beiträge: 9
Geschlecht: 
Mitglied seit: 12.10.2009
Deutschland
|
|
Re: Wenn fast alle Zahlen Primzahlen wären........ #4
|
Datum: 30.10.2009, 12:43
|
Danke rifischer,
ich habe leider einen Schreibfehler übersehen:
der Satz: Es findet sich sogar zwischen in jedem Intervall n+n und n*(n+1) eine Primzahl
muss heissen:
Es findet sich sogar zwischen in jedem Intervall n*n und n*(n+1) eine Primzahl..
Das ist die unbewiesene legendre vermutung, die es in verschiedenen versionen gibt:
z.B.: zwischen 2 Quadratzahlen gibt es mindestens 2 Primzahlen...
Ich habe übrigens ein Problem, die "Computerfunktion" in eine korrekte mathematische Formel mit all den notwendigen Bedingungen auszudrücken.
Um Hilfe bin ich dankbar.
|
|
|
|
|