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

    [JAVA] Programma per gestire numeri coprimi

    Ho un errore di Stack OverFlow nel seguente programma:

    codice:
    public class Coprimi {
        private int[] insieme;
        private int cont = 0;
    
        public Coprimi () {
            insieme = new int [100];
        }
    
        public boolean aggiungi(int n) {
            if(cont>100) {
                System.out.println("troppi elementi nell'insieme");
                return false;
            }
            if (mcd(n)!=1) return false;
            else {
                insieme[cont] = n;
                cont++;
                return true;
            }
        }
    
        public int mcd (int n) {
            int max=1;
            for (int i=0;i<cont;i++) {
                if (mcd2(insieme[i],n)>max) {
                    max = mcd2(insieme[i],n);
                }
            }
            return max;
        }
    
        public static int mcd2 (int x,int y) {
            if(x==0) return y;
            else if (x < y) return (mcd2(y-x , y));
            else return (mcd2(x , x-y));
        }
    }
    
    public class TestCoprimi {
        public static void main (String[] args) {
            Coprimi numero1 = new Coprimi();
            System.out.println(numero1.aggiungi(15));
            System.out.println(numero1.aggiungi(14));
            System.out.println(numero1.aggiungi(11));
            System.out.println(numero1.mcd2(35,11));
        }
    }
    Il testo dell'esercizio recita così:

    Definire una classe Coprimi per gestire insiemi di numeri interi tra loro coprimi. Il costruttore inizializza l'insieme come vuoto. La classe ha due metodi aggiungi e mcd. Il metodo aggiungi prende come argomento un intero e se questo è coprimo con tutti i numeri nell'insieme lo aggiunge all'insieme e ritorna true, altrmenti non fa nulla e ritorna false. Il metodo mcd prende come argomento un intero e ritorna il massimo comun divisore tra l'intero e gli interi dell'insieme. Ad esempio se l'insieme è {15, 14, 11} e l'argomento è 35 allora il metodo ritorna 7.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,317

    Moderazione

    Ti invito a leggere il regolamento per conoscere le norme su come postare il codice all'interno del forum (punto 6).

    Inoltre sposto la discussione nel forum Java.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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 © 2025 vBulletin Solutions, Inc. All rights reserved.