View Full Version : [c++]radice quadrata
:confused: :confused: come calcolo la radice quadrata di un numero?
p.s. mi sertve per determinare se un numero è primo o no!
:confused: :confused: come calcolo la radice quadrata di un numero?
p.s. mi sertve per determinare se un numero è primo o no!
usa la sqrt della math.h
Ziosilvio
14-02-2006, 15:30
come calcolo la radice quadrata di un numero?
p.s. mi sertve per determinare se un numero è primo o no!
Ma... invece di confrontare d con sqrt(n), non fai prima a confrontare d*d con n?
Ma... invece di confrontare d con sqrt(n), non fai prima a confrontare d*d con n?
eh??
:eek: :eek:
bah..io ho fatto in questo modo ed il programma mi funziona perfettmente:
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
double x;
int esci=1;
do {
cout << "Inserisci un numero intero positivo" << endl;
cin >> x;
if(x<1) { cout << "Inserire un numero positivo" << endl;
cin >> x;
} else if(x==1) { cout << "Il numero inserito è' 1 ed e' sicuramente primo" << endl; }
else if(x>1) {
double ris = sqrt(x);
int ris1 = ris;
if((ris1*ris1) == x) {
cout << "Il numero inserito non e' primo" << endl; }
else { cout << "Il numero inserito e' primo" << endl; }
}
cout << "ancora?(y=1,n=0)" << endl;
cin >> esci;
} while(esci);
system("PAUSE");
return 0;
}
Ziosilvio
14-02-2006, 16:52
bah..io ho fatto in questo modo ed il programma mi funziona perfettmente:
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
double x;
int esci=1;
do {
cout << "Inserisci un numero intero positivo" << endl;
cin >> x;
if(x<1) { cout << "Inserire un numero positivo" << endl;
cin >> x;
} else if(x==1) { cout << "Il numero inserito è' 1 ed e' sicuramente primo" << endl; }
E questo gia' e' un errore, visto che 1 non e' un numero primo.
else if(x>1) {
double ris = sqrt(x);
int ris1 = ris;
if((ris1*ris1) == x) {
cout << "Il numero inserito non e' primo" << endl; }
else { cout << "Il numero inserito e' primo" << endl; }
}
Questo non controlla se x e' primo, ma se e' un quadrato perfetto.
certo forse la metologia con cui ci sono arrivata non è del tutto giusta, ma lo scopo è raggiunto. se ho un numero la cui radice è quadrata è un intero, la funzione approssima l'intero(quindi resta tale) e moltiplicandolo per se stesso mi ri da il numero iniziale..quindi il numero è divisibile. se ho un numero primo,la radice mi da un numero decimale, approssimandolo mi restitiuiosce un intero diverso ke moltiplicandolo per se stesso non mi da il numero iniziale..quindi il numero è primo!
non capisco quale sia il problema... :confused:
certo forse la metologia con cui ci sono arrivata non è del tutto giusta, ma lo scopo è raggiunto. se ho un numero la cui radice è quadrata è un intero, la funzione approssima l'intero(quindi resta tale) e moltiplicandolo per se stesso mi ri da il numero iniziale..quindi il numero è divisibile. se ho un numero primo,la radice mi da un numero decimale, approssimandolo mi restitiuiosce un intero diverso ke moltiplicandolo per se stesso non mi da il numero iniziale..quindi il numero è primo!
non capisco quale sia il problema... :confused:
:confused: un numero è primo se divisibile solo per 1 e per se stesso....
ad esempio 15 non è ne primo (3x5) ne quadrato perfetto....
:confused: un numero è primo se divisibile solo per 1 e per se stesso....
ad esempio 15 non è ne primo (3x5) ne quadrato perfetto....
mica ho detto ke nn è così? :boh:
dico solo ke il programma su 100000000 numeri inseriti mi da il 100% di risposte esatte. l'importante è riuscirci no?ma non come...
xplorer87
14-02-2006, 17:34
in che modo il fatto di essere un numero primo c'entra con la radice di x?
Ziosilvio
14-02-2006, 18:05
in che modo il fatto di essere un numero primo c'entra con la radice di x?
Se x non e' primo, allora esiste un primo p che divide x e che non supera la radice quadrata di x.
Ziosilvio
14-02-2006, 18:08
certo forse la metologia con cui ci sono arrivata non è del tutto giusta, ma lo scopo è raggiunto. se ho un numero la cui radice è quadrata è un intero, la funzione approssima l'intero(quindi resta tale) e moltiplicandolo per se stesso mi ri da il numero iniziale..quindi il numero è divisibile. se ho un numero primo,la radice mi da un numero decimale, approssimandolo mi restitiuiosce un intero diverso ke moltiplicandolo per se stesso non mi da il numero iniziale..quindi il numero è primo!
non capisco quale sia il problema... :confused:
Che (come ti hanno gia' detto) se hai un numero che non e' ne' primo ne' un quadrato perfetto (e ce ne sono: ad esempio, 6) il tuo programma da' una risposta sbagliata.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.