Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C] Verificare se il numero è primo.

    Salve questo è un mio piccolo programmino che ho realizzato per verificare se il numero è primo, tutto sembra funzionare ma c'è un piccolo bug che si verifica appena si chiede di verificare se un numero multiplo di un numero primo è primo.

    ecco il prog:
    codice:
        cout<<"Quanti numeri vuoi inserire? ";
        cin>>n;
        
        cout<<"Inserisci i numeri: ";
        for (int i=0; i<n; i++){
            cin>>num;
            
            if (num == 2)
            cout<<"Il numero e primo.\n";
            else {
            
                 if (num % 2 == 0)
                 cout<<"Il numero non e primo.\n";
                 else {
                      
                      for (int k=2; k<=8; k++){
                          ris = num % k;
                          if (ris == 0){
                             cout<<"Il numero non e primo.\n";
                             break;
                             }
                          else {
                      
                               for (int j=2; j<=num; j++){
                                   ris = num % j;
                                   if (ris == 0)
                                   cout<<"Il numero e primo.\n";
                               }
                          }
                      }
                 }
            }
        }
    Dov'è il problema ? ^^
    My Web Site: www.wowwiki.it | under development

  2. #2
    Salve questo è un mio piccolo programmino che ho realizzato per verificare se il numero è primo, tutto sembra funzionare ma c'è un piccolo bug che si verifica appena si chiede di verificare se un numero multiplo di un numero primo è primo.
    Mi spieghi che senso ha ?
    Il multiplo di un numero primo può essere diviso per il numero primo, quindi non è primo o sbaglio ?
    Experience is what you get when you don’t get what you want

  3. #3
    Si' in effetti e' proprio sbagliata la logica del programma, serebbe stato piu' semplice fare una cosa del genere:

    codice:
    #include <iostream>
    #include <cstdlib>
    using namespace std;
    
    int main(void) {
    	int x;
    	bool isPrime = true;
    
    	cout << "\n Dammi un int: ";
    	cin >> x;
    
    	for(int i = x / 2; i > 1; i--) {
    		if(!(x%i)) {
    			isPrime = false;
    			cout << "\n " << x << " e' divisibile per " << i;
    		}
    	}
    
    	if(isPrime) cout << "\n " << x << " e' primo!";
    	else cout << "\n quindi " << x << " non e' primo!";
    
    	cout << "\n ";
    	system("pause");
    }
    (\_/)
    (^_^)
    (> <)

  4. #4
    Potresti risparmiare dei cicli inizializzando la variabile i alla radice quadrata intera del numero che si intende analizzare invece che solo dalla metà . Saluti

  5. #5
    Potresti risparmiare dei cicli inizializzando la variabile i alla radice quadrata intera del numero che si intende analizzare invece che solo dalla metà.
    Vero... comunque il programmino l'ho fatto su due piedi, quindi non sono stato li' a pensarci piu' di tanto!!
    (\_/)
    (^_^)
    (> <)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.