Als (u,v)-Ulam-Folge wird eine von dem polnischen Mathematiker Stanisław Marcin Ulam definierte Zahlenfolge bezeichnet. Dabei sind u und v natürliche Zahlen. Die Folge ist definiert durch:

ist die kleinste natürliche Zahl, die größer als ist und sich eindeutig als Summe zweier Zahlen aus darstellen lässt.

Beispiel: Die (1,2)-Ulam-Folge hat die Glieder

.

5 gehört nicht zur Folge, da 5 = 2+3 = 4+1 sich nicht eindeutig darstellen lässt. Die weiteren Folgeglieder sind

.

Die Glieder einer Ulam-Folge werden auch als (u,v)-Ulam-Zahlen bezeichnet.

Realisierung der (1,2)-Ulam-Folge in C++

Bearbeiten
#include <iostream>
#define N 100		    	// beliebige Obergrenze der Folge

using namespace std;

int main(){
	int ulam[N]={};		// Ulamfolge als Array
	ulam[0] = 1;			// Deklaration des 1.
	ulam[1] = 2;			// und 2. Elements
	
	for(int i=2; i< N; i++){
		int x = ulam[i-1];	// potentiell nächsthöherer Listeneintrag 
		int c;		       	// Zähler der möglichen Kombinationen
		
		do {
			c = 0;
			x++;		
				        	// Durchexerzieren aller möglichen
				        	// Kombinationen bisherigen Listenelemente
			for(int k=0; k<i; k++){
				for(int n=0; n<k; n++){
					
				        	// Zähler Inkrementation bei Gültiger Kombination:
					if(ulam[n] + ulam[k] == x){
						c++;
					}
					
				}
			}
		} while(c!=1);		// Abbruchbedingung für den Fall einer einzigen(!)
				        	// möglichen Kombination
		
		ulam[i] = x;		// Zuweisen des Wertes mit gültiger kombination
		cout << x << endl;	// Ausgabe
		
	}
	return 0;
}

Auf diese Art lässt sich jede beliebige Ulam-Folge (u,v) realisieren, indem man im Code

ulam[0] = u;
ulam[1] = v;

einsetzt.

Literatur

Bearbeiten
  • Richard Guy: Unsolved Problems in Number Theory. 3. Aufl. Springer, New York u. a. 2004, ISBN 0-387-20860-7. S. 166–167
Bearbeiten