PDA

Visualizza la versione completa : [C] Funzione numeri primi


ferra03
21-10-2009, 14:55
Buon giorno a tutti, sto facendo un esercizio in C e mi chiede di scrivere una funzione che verifichi se un numero primo o no io ho fatto questo tentativo


#include <stdio.h>
#define ISPRIMO 1
#define NOTPRIMO 0

typedef int bool;

int primo (int a) {

if ((a % a) == 0 & (a % 1) == 0)

return ISPRIMO;

else

return NOTPRIMO;
}

il problema che per ogni numero inserito il valore sempre 1 e non capisco il perch, potete aiutarmi? :dh:

oregon
21-10-2009, 15:03
il problema che per ogni numero inserito il valore sempre 1 e non capisco il perch, [/QUOTE]

Beh ... spiega ad alta voce a te stesso cosa significa

if ((a % a) == 0 & (a % 1) == 0)

e capirai il perche'

ant_alt
21-10-2009, 15:07
innanzi tutto l'AND logico non "&" ma "&&"
e poi credi che verificare che un numero sia divisibile per se stesso e per uno basti per i numeri primi?

ferra03
21-10-2009, 15:07
quell'errore l'ho gi corretto e spiegato a me stesso il problema che non riesco a trovare l'algoritmo adatto per risolvere il problema

oregon
21-10-2009, 15:14
Originariamente inviato da ferra03
quell'errore l'ho gi corretto e spiegato a me stesso il problema che non riesco a trovare l'algoritmo adatto per risolvere il problema

Ma se lo hai fatto, perche' lo proponi ? Noi vediamo quello che tu scrivi, non quello che tu pensi ...

Come si trova un numero primo ? Quali sono le regole ?

ferra03
21-10-2009, 15:17
non ci siamo capiti... io so che un numero primo se divisibile solo per se stesso e per 1...il problema che non riesco a scriverlo in C

ant_alt
21-10-2009, 15:21
Originariamente inviato da ferra03
non ci siamo capiti... io so che un numero primo se divisibile solo per se stesso e per 1...il problema che non riesco a scriverlo in C

ok, ma hai compreso il fatto che devi testare la divisibilit anche per tutti i numeri minori del numero primo? se testi solo che sia divisibile per se stesso e per uno chi ti dice che non sia divisibile anche per altri numeri?:)

ferra03
21-10-2009, 15:25
grazie mille ho gi fatto... :unz:

Loading