NWD

0

Witam.Zrobiłem coś taki kod dla liczb pierwszych. Czy jest możliwość żeby zrobić w podobny sposób z NWD? Napisałem coś takiego ale to wgl nie ma sensu i nie wiem jak to przerobić aby było dobrze. Z góry dzięki :)

public static boolean NWD(int n) {
        int m = 0;
        while (n !=m) {
            if (n > m)
                n = n-m;
            else
                m = m-n;
        }

        return n;

    }

public class Obliczenia {

    public static boolean czyPierwsza(int n) {
        int liczbaD = 0;

        for (int i = 1; i <= n; i++) {
            if (n % i == 0) {
                liczbaD++;
            }
        }

        return liczbaD == 2;
}

 public static void main(String[] args) {

        try {   
            String napis1 = args[0];
            String napis2 = args[1];

            int liczba1 = Integer.parseInt(napis1);
            int liczba2 = Integer.parseInt(napis2);

System.out.println("Liczby pierwsze z przedziału:");

            for (int i = min; i <= max; i++) {
                if (czyPierwsza(i)) {
                    System.out.println(i);
                }

            }
0

Zapomniałem.

int min = Math.min(liczba1, liczba2);
int max = Math.max(liczba1, liczba2);
0

Co to znaczy w podobny sposób? W czym ma być to podobieństwo?

0

Chaos, co Chcesz napisać, funkcję zwracającą NWD dwóch liczb i sprawdzającą pierwszość? Czemu NWD zwraca typ logiczny?

0

W Properties->Run mam te dwie liczby i chciałbym z nich obliczyć NWD, chciałem zrobić właśnie przez typ logiczny ale to wgl nie miało sensu, wcześniej robiłem przez public static int ale nie wiem jak mam przekształcić ten kod żeby brał te liczby z argumentów i liczył mi NWD...

0

Przede wszystkim potrzebujesz dwóch argumentów w funkcji. Funkcja typu int była słusznym wyborem. NWD oznacza największy wspólny dzielnik a ty jeden z argumentów ustawiasz na 0 jaki jest największy wspólny dzielnik 0 i jakiejkolwiek innej liczby? Musisz pobrać dwa argumenty a nie ustawiać jeden z nich na 0.

0

Na NWD jest prosty program:

  int gcd(int a, int b) {
    int tmp = 0;
    while (b != 0) {
      tmp = b;
      b = a % b;
      a = tmp;
    }
    return a;
  }
0

Skoro i tak padły gotowce to napiszę jeszcze ten algorytm w twojej wersji.

public static int NWD(int n,int m) {
        while (n !=m) {
            if (n > m)
                n = n-m;
            else
                m = m-n;
        }
        return n;
    }

Tak naprawdę nie ma prostej odpowiedzi ,które algorytm jest lepszy. Wszystko zależy od konkretnych danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0