Ho bisogno di scrivere un programma che prende 4 input come segue
- N = Il numero di interi da generare (10 < N < 10000)
- Inizio = Il valore minimo degli interi (100 < Inizio)
- Fine = Il valore massimo degli interi
- Passaggio = La differenza minima tra due numeri interi (100 < Step)
e genera N interi all'interno dell'intervallo [Inizio, Fine]
Chiamerò gli interi generati come GI
Sono soggetti ai seguenti vincoli:
- Ogni GI deve essere unico
- La differenza tra qualsiasi 2 GI deve essere almeno uguale al valore "Step"
- Nessun GI deve essere una combinazione lineare di uno qualsiasi degli altri GI
per combinazione lineare, intendo
GI[i] != a1*GI[1] + a2*GI[2] + a2*GI[3] + ... an*GI[n]
where n!=i for any n,i within [1,N] and {a1,a2,a3...an} are some integers
and != means 'Not equal to'
Che cos'è un buon (se non il migliore) metodo per codificarlo?
Ho pensato a un algoritmo per trovare i primi all'interno di quell'intervallo usando setaccio di Atkin . Ora se il numero di numeri primi è maggiore di N, allora procedi con il controllo della condizione di linearità, altrimenti generi numeri casuali che soddisfano la condizione del passo fino a raggiungere N valori e poi procedi con il controllo ... Questo non mi sembra molto elegante. Quindi sono interessato ai metodi migliori