|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
[C] Programmino... non mi ammazzate
Ciao.
Devo fare un programmino che fa riferimento alla congettura di Gladbach, il quale asserisce che ogni intero pari n maggiore di 2 è la somma di due numeri primi. Il libro consiglia di usare la funzione is_prime() che è una funzione che mi restituisce 1 se il numero n è pari e 0 altrimenti. Ma per calcolare questa congettura che ci faccio con questa funzione. A me non serve sapere se un numero è pari o no, perché tanto io faccio un ciclo (in questo caso devo farlo partire da 700 fino a 1100 secondo quanto mi chiede il libro) e lo faccio aumentare con step di 2. Quindi è ovviamente sempre pari il numero che vado a considerare. Quindi come faccio a dirgli ad esempio che 700=17+683? Grazie. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Dato il numero n devi trovare una copia di numeri prima la cui somma sia n. se hai una funzione
is_prime(int x) puoi iniziare a scorrerti i numeri da 1 fino a n/2; per ogni numero k che esamini cottrolli se k è primo e se (n-k) è primo. appena trovi un k tale che k ed n-k sono primi hai trovato la coppia che cercavi.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Non ho capito molto. Io devo scorrere i numeri da 700 a 1100, che significa cominci a scorrere i numeri da 1 a n/2?
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
per ogni numero n di cui ti interessa trvare la coppia di numeri primi che hanno per somma n devi fare quello che ti ho scritto
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
#5 | ||||
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Quote:
Puoi però verificarla per valori non troppo grandi: ed è quello che ti chiede l'esercizio. Quote:
I fattori che cerchi, no (a meno che il numero non sia 4). Quote:
A questo punto la soluzione dell'esercizio dovrebbe essere immediata (ti servono due cicli annidati).
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu Ultima modifica di Ziosilvio : 25-09-2005 alle 00:24. |
||||
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Codice:
#define N_PRIME 10000
void main(void)
{
unsigned long table_prime[N_PRIME];
unsigned char result_table[N_PRIME<<1];
unsigned long i,j;
for(i=0;i<N_PRIME<<1;i++)
result_table[i]=0;
for(i=0;i<N_PRIME;i++)
{
for(j=i;j<N_PRIME;j++)
result_table[table_prime[i]+table_prime[j]]=1;
}
for(i=4;i<=table_prime[N_PRIME-1];i+=2)
{
if(result_table[i]==0)
{
/* VERIFY FAIL */
}
}
}
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
We... repne! Sei tornata!
Bello, ora passo subito a studiarmi il tuo codice.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Ciao a tutti!!! Ho ritirato fuori una bella discussione ehh
A distanza di 8 mesi sono riuscito a fare questo programma vi posto il codice così vedete se ho fatto tutto bene: Codice:
#include "funzioni.h"
#define START 700
#define FINISH 1100
int main(void){
int i,j,k;
printf("\nEvery even number greater than 2 is the sum of two primes\n\n");
for(i=START; i<=FINISH; ++i)
for(j=1; j<i; ++j)
if((is_prime(j)) && is_prime(i-j)){
printf("%d = %d + %d\n", i, j, i-j);
break;
}
return 0;
}
Volevo sapere se c'è qualche sito o anche qualche libro che abbia esercizi che mi facciano imparare bene il C. Perché il mio libro non ne ha molti di questo tipo. Grazie. |
|
|
|
|
|
#9 | |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:06.



















