Visualizzazione stampabile
-
Esercizi in JavaScript
Ciao, per domani devo fare un programma in js che mi faccia visualizzare tutti i fattori primi di un numero.. Per esempio se do in input 12 mi mostri 3, se do 100 mi mostri 5..
Devo usare solo i costrutti IF, ELSE IF, ELSE, FOR, WHILE, Booleani.. Non di più..
Mi potete aiutare?
-
Prova a postare cio che sei riuscito a fare perchè se te lo fà qualcuno da zero e lo copi pari pari è inutile.. ;)
-
EDIT: spè, non avevo capito cosa volevi fare nel tuo programma :lol:
spè
-
Per LukeF: Io posto ma è al 100% sbagiato.. Praticamente il senso è che creo una variabile contatore e una i che usrò nel ciclo, poi faccio if( numero%i==0 ) contatore+=1, cosi si incrementa.. poi se i%contatore!=0 allora uso l' alert.. te l' ho spiegato e ora lo posto:
var n=parseInt(prompt("Inserisci il numero"));
var cont=0;
var i;
for(i=2;i<Math.sqr(n);i++){
if(n%i==0){
cont=cont+1;
}
if (i%cont!=0){
alert(scambio);
}
}
Per Obo: No non posso, comunque penso di riuscire a capire la formula da usare se la postic :D
-
domanda: se i fattori compaiono più di una volta vuoi che li stampi comunque o no?
perchè ad esempio 12 lo scomponi in 2*2*3, 100 lo scomponi in 2*2*5*5
e un abbozzo di codice (in C, ma si capisce il senso) molto semplice è questo
codice:
#include <stdio.h>
int main(void){
int num;
int x;
scanf("%d", &num); //legge il numero
x = 2; //è il divisore
printf("Divisibile per:\n");
/*finchè il numero inserito è maggiore di 1, controlla che il resto sia uguale a 0.
se lo è stampa il divisore e divide il numero per il divisore
altrimenti incrementa il divisore di 1*/
while(num > 1) {
if( num % x == 0) {
printf("%d\n", x);
num /= x;
}
else {
x++;
}
};
return 0;
}
-
Obo, il programma che devo fare deve mostrare SOLO i fattori primi, nel caso di 100 deve mostrare solo 5.. :D Quindi il tuo non va bene, ti ringrazio per il tempo perso ma quello la l' avevo fatto anch'io xD
-
Quote:
Originariamente inviata da
Neor
Obo, il programma che devo fare deve mostrare SOLO i fattori primi, nel caso di 100 deve mostrare solo 5.. :D Quindi il tuo non va bene, ti ringrazio per il tempo perso ma quello la l' avevo fatto anch'io xD
Tu hai le idee confuse su cosa siano i fattori primi.
-
I fattori primi di un numero non sono quelli che sono divisibili solo per uno e per se stessi e sono sottomultipli del numero indicato? no perchè posso aver sbagliato e manco essermene accorto
-
1, 2, 3, 5 sono numeri primi... quindi per gli input che hai scritto dovrebbe funzionare... per altri più grossi non so..
-
Quote:
Originariamente inviata da
LukeF
1, 2, 3, 5 sono numeri primi... quindi per gli input che hai scritto dovrebbe funzionare... per altri più grossi non so..
1 non è affatto un numero primo.
L'unico modo per trovare i numeri primi è il crivello di eratostene, cioè andare letteralmente per tentativi, anche se esistono procedimenti matematici molto più complessi (e sicuramente fuori dallo scopo dell'esercizio) per determinare con una certa sicurezza se un numero grande è primo.
In pratica, dovresti provare a dividere il numero per 2 3 4 ecc finché trovi un divisore. Il primo divisore che trovi è certamente primo, perché tutti i suoi divisori sono anche divisori del numero iniziale. Quindi, calcoli il quoziente e ripeti il procedimento.