Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Il nuovo top di gamma vivo punta su un comparto fotografico particolarmente articolato, con un teleobiettivo da 200 megapixel e teleconvertitori esterni capaci di arrivare a 400 mm equivalenti. Lo abbiamo provato a Tenerife, mettendo alla prova fotocamere, prestazioni, autonomia e accessori. Ecco come si è comportato.
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-06-2005, 18:04   #1
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
[C] Problemi sui numeri primi

Ciao a tutti! Spero di non scocciarvi troppo però sto cercando di imparare.

Allora il testo mi dice costruire una funzione int is_prime(int n) che restituisce 1 se il numero n è primo 0 altrimenti. Fino a qui ok. Ma lui mi da un suggerimento dicendomi che se ke n sono interi positivi, k divide n se e solo se n%k vale zero. Quello che non capisco è che se la funzione riceve solamente n come parametro che valore dovrebbe assumere k? E da dove se lo va a pigliare sto k?

Poi di problema ce n'è un altro che dice di scrivere una funzione che trovi tutti i fattori di una dato numero. E qui proprio sono a corto di idee. Come faccio a dirglielo?

Grazie ancora per il vostro prezioso aiuto.
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 25-06-2005, 18:33   #2
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16216
Quote:
Originariamente inviato da Manugal
il testo mi dice costruire una funzione int is_prime(int n) che restituisce 1 se il numero n è primo 0 altrimenti.
Un esercizio classico.
Quote:
lui mi da un suggerimento dicendomi che se ke n sono interi positivi, k divide n se e solo se n%k vale zero. Quello che non capisco è che se la funzione riceve solamente n come parametro che valore dovrebbe assumere k? E da dove se lo va a pigliare sto k?
Altro suggerimento: usa i cicli e le variabili locali.
Quote:
Poi di problema ce n'è un altro che dice di scrivere una funzione che trovi tutti i fattori di una dato numero. E qui proprio sono a corto di idee. Come faccio a dirglielo?
Usi un ciclo su una variabile locale, come nell'esercizio precedente; e quando trovi divisibilità, effettui una stampa.
(Se ho capito bene, è ancora prestino per le liste.)

P.S.: Su che libro stai studiando?
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 25-06-2005, 18:36   #3
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Il testo è: Al Kelley - Ira Pohl - Didattica e Programmazione C - Addison/Wesley Pearson

Cmq non ho ben capito "usa i cicli e le variabili locali". k da dove esce fuori? Se non ha un valore prefissato (o che cmq gli passo io da un'altra funzione) come fa un numero fissato n e essere divisibile per un ipotetico numero k. Lui non sa che valore ha k quindi come fa a stabilire se è primo no? Spero di essermi spiegato.

Ultima modifica di Manugal : 25-06-2005 alle 18:41.
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 25-06-2005, 19:35   #4
n0ps
Junior Member
 
Iscritto dal: Jun 2005
Messaggi: 13
Codice:
int main ()
{
	int numero;
	int div, i;
	printf ("Inserisci il numero\n");
	scanf ( "%d", &numero );
	div = numero;
	
	for ( i = 2; div > 1; ) {
		if (! ( div % i ) ) {
			printf ( "%d --> %d e' divisibile per %d e resta %d\n",
				 numero, div, i, div/i );
			div /= i;
			continue;
		}
		i ++;
        }
	
	return 0;
}
Con pochissime modifiche svolge entrambi gli esercizi che hai richiesto.
n0ps è offline   Rispondi citando il messaggio o parte di esso
Old 25-06-2005, 20:12   #5
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
non mi ricordo bene ma se non ricordo male un mio compagno aveva trovato che bastava andare fino a log del numero o forse era la metà

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 25-06-2005, 20:57   #6
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16216
Quote:
Originariamente inviato da Manugal
Il testo è: Al Kelley - Ira Pohl - Didattica e Programmazione C - Addison/Wesley Pearson
Mi sembra di ricordare che sia un buon testo.
Quote:
non ho ben capito "usa i cicli e le variabili locali". k da dove esce fuori? Se non ha un valore prefissato (o che cmq gli passo io da un'altra funzione)
Oppure, che gli assegni tu dall'interno della funzione.
E qui mi fermo, perché adesso è ora che ti impratichisca un po' tu
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2005, 10:24   #7
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16216
Quote:
Originariamente inviato da Fenomeno85
non mi ricordo bene ma se non ricordo male un mio compagno aveva trovato che bastava andare fino a log del numero o forse era la metà
Era la radice quadrata: se un numero non è primo, allora ha un fattore primo che non supera la sua radice quadrata.
Meglio di così non puoi fare, i controesempi sono i quadrati dei primi.
ESERCIZIO: dimostrare, che è facile
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2005, 10:47   #8
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Forse ci sono.

Potrei fare un ciclo for con k che va da 2 a n (n escluso) e vedere se per ogni k n è divisibile per quel k. Se non lo è è primo. E' giusto?
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2005, 10:59   #9
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da Ziosilvio
Era la radice quadrata: se un numero non è primo, allora ha un fattore primo che non supera la sua radice quadrata.
Meglio di così non puoi fare, i controesempi sono i quadrati dei primi.
ESERCIZIO: dimostrare, che è facile
Se puo interessare c'è gia la mia dimostrazione nel Thread di qualche tempo fa sul thread del Crivello di Eratostene.

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2005, 21:11   #10
n0ps
Junior Member
 
Iscritto dal: Jun 2005
Messaggi: 13
Quote:
Originariamente inviato da Manugal
Forse ci sono.

Potrei fare un ciclo for con k che va da 2 a n (n escluso) e vedere se per ogni k n è divisibile per quel k. Se non lo è è primo. E' giusto?
Si ma guarda che è quello che fa il codice che ti ho postato prima
n0ps è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2005, 09:17   #11
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Manugal
Forse ci sono.

Potrei fare un ciclo for con k che va da 2 a n (n escluso) e vedere se per ogni k n è divisibile per quel k. Se non lo è è primo. E' giusto?
Vai fino a sqrt(n)...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2005, 10:07   #12
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16216
Quote:
Originariamente inviato da cionci
Vai fino a sqrt(n)...
E mi raccomando: non c'è bisogno di includere math.h e chiamare sqrt, si può fare tutto con l'aritmetica intera...
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2005, 10:14   #13
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Giusto...basta fare qualche operazione sul contatore...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2005, 11:10   #14
Maephisto
Member
 
L'Avatar di Maephisto
 
Iscritto dal: Mar 2004
Città: Milano
Messaggi: 107
già magari riesci anche a trovare i fattori di un numero in tempo costante o al più polinomiale (chi ha orecchie per intendere... )


ah chiaramente invece per trovare se un numero è primo o meno... quello è facile... da qualche anno
__________________
Non c'è la morte... c'è la Forza...

Ultima modifica di Maephisto : 27-06-2005 alle 11:13.
Maephisto è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2005, 18:43   #15
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Quote:
int main ()
{
int numero;
int div, i;
printf ("Inserisci il numero\n");
scanf ( "%d", &numero );
div = numero;

for ( i = 2; div > 1; ) {
if (! ( div % i ) ) {
printf ( "%d --> %d e' divisibile per %d e resta %d\n",
numero, div, i, div/i );
div /= i;
continue;
}
i ++;
}

return 0;
}
Io ho fatto così:

for (k=2; k<n; k++)
if(k%n)
return 0;
else
return 1;

Non mi sembra che sia proprio uguale al tuo (anche perché il tuo non l'ho proprio capito ). Ma perché complicarsi sempre la vita? (Non è per qualcosa, è che sono agli inizi e non riesco a capire questo codice così "sofisticato"). Grazie cmq
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2005, 20:50   #16
FedeX_65246X
Member
 
Iscritto dal: Feb 2005
Città: Milano
Messaggi: 35
Quote:
Originariamente inviato da Manugal
Io ho fatto così:

for (k=2; k<n; k++)
if(k%n)
return 0;
else
return 1;
Ti consiglio di ricominciare da zero con il C, prenditi tempo e studia la soluzione proposta più sopra.
Inoltre non pretendere di risolvere un problema senza aver ben chiaro di cosa si tratta, i numeri dispari non sono i numeri primi.
Buon lavoro, ci sono passato anch'io
__________________
Res ipsa loquitur
FedeX_65246X è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2005, 20:57   #17
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Scusa però ti dico che il mio funziona perché se metto 9 come valore (che è dispari ma non è primo) la funzione mi restituisce correttamente 0. Qundi che ha di sbagliato il mio ciclo?
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2005, 22:46   #18
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Cmq sto provando lo stesso a vedere quel codice scritto gentilmente da n0ps:

Codice:
int main ()
{
	int numero;
	int div, i;
	printf ("Inserisci il numero\n");
	scanf ( "%d", &numero );
	div = numero;
	
	for ( i = 2; div > 1; ) {
		if (! ( div % i ) ) {
			printf ( "%d --> %d e' divisibile per %d e resta %d\n",
				 numero, div, i, div/i );
			div /= i;
			continue;
		}
		i ++;
        }
	
	return 0;
}
Non capisco bene la if e il div/=i. Cioè la if è come se dicesse if div % i !=0 giusto? Se così fosse come fa il numero a essere divisibile per i (dato che il resto è diverso da 0)? Poi non capisco dopo perché fa div/=i. Grazie a chi mi darà delucidazioni
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2005, 09:32   #19
Molz
Member
 
Iscritto dal: May 2003
Messaggi: 119
La if significa proprio il contrario di quello che dici tu

se il numero è divisibile per i
div % i fa 0

il ! è l'operatore booleano not che applicato a 1 espressione booleana la fa diventare false se è vera e vera se è falsa.
Siccome il valore 0 corrisponde a un espressione booleana falsa allora !0 = vero

quindi if (! ( div % i ) ) è lo stesso che scrivere if ((div % i)==0)

div /=i è lo stesso che scrivere div = div /i

Quel ciclo trova tutti i fattori primi di un numero, se non facesse quella divisione (a parte che il ciclio non terminerebbe mai) risulterebbe che 12 è divisibile per 2, poi per 2, poi per 3, poi per 4, poi per 6 e poi per 12.
Quando l'output giusto è 2 2 3
Molz è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2005, 10:36   #20
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Ok grazie. Se non avesse messo il continue che sarebbe successo?
Manugal è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Neodimio, ferro e boro dai dischi rigidi...
GPT-6 Astra puó leggere e correggere i p...
Lyncast X5PRO MAX, un bel videoproiettor...
Robot aspirapolvere, prezzi folli su Ama...
Anthropic: l'IA può far avanzare ...
JBL Quantum TWS, prezzo bassissimo su Am...
SteamOS su Mac Apple Silicon: giochi fun...
Erano finiti, Amazon ha fatto scorta e i...
Scope elettriche Tineco e DREAME, prezzi...
Apple chiude il trimestre fiscale con 11...
Qualcomm HBC supera la validazione in la...
Tachyum avvia la procedura di fallimento...
La sonda spaziale NASA Lucy ha raggiunto...
Le GeForce RTX 5000 scarseggiano, tornan...
Raspberry Pi 5, il prezzo è ormai...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:20.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v