Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
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: 16213
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: 16213
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: 16213
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: 16213
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


DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
Oro rosa e charm Les Néréi...
La XPeng P7+ è salpata in direzio...
Quali sono i componenti più affid...
Amazon Haul raddoppia lo sconto: -30% su...
Germania e Danimarca accelerano sull'eol...
Azienda cinese che chiede aiuto ad una a...
Per aumentare la competitività ne...
I nuovi MacBook con M5 Pro e Max usciran...
Mass Effect 5 dovrebbe ispirarsi di pi&u...
Windows 11, ancora problemi di spegnimen...
Amazon Seconda Mano: sconto extra del 10...
Apple perde altri talenti del settore AI...
Schede madri ASRock: nuove segnalazioni ...
Troppa IA su Windows 11: Microsoft pront...
CATL svela la batteria 5C che si auto-ri...
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: 15:44.


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