Mam do zrobienia projekt, który polega na wykonaniu programu do szyfrowania RSA. Niestety póki co utknąłem na sprawdzeniu czy dwie wybrane przez użytkownika liczby są pierwsze. Próbowałem to zapisać na wiele różnych sposobów, niestety ciągle jest jakiś problem. Np. wygląda na to, że program w pętli domaga się wpisywania liczby raz za razem, bez wyświetlania komunikatu. Nie wiem z jakiego powodu tak się dzieje, mam nadzieję, że ktoś będzie mógł mi to wytłumaczyć.
import java.util.Scanner;
public class Szyfrowanie_RSA
{
public static void main(String[] args)
{
System.out.print("p = ");
Scanner sc = new Scanner(System.in);
while(! sc.hasNextInt() || sc.nextInt() < 2)
{
System.out.println("To nie jest liczba pierwsza.");
System.out.print("Podaj liczbe pierwsza: ");
sc.next();
}
int p, a, b, i;
do
{
p = sc.nextInt();
a = 1;
b = 1;
for(i = 2; i < p; i++)
{
if(p % i == 0)
{
b = 0;
}
}
if(b == 0)
{
a = 0;
System.out.println("To nie jest liczba pierwsza.");
System.out.print("Podaj liczbe pierwsza: ");
sc.next();
}
} while(a == 0);
System.out.println("p = " +p);
System.out.print("q = ");
sc = new Scanner(System.in);
while(! sc.hasNextInt() || sc.nextInt() < 2)
{
System.out.println("To nie jest liczba pierwsza.");
System.out.print("Podaj liczbe pierwsza: ");
sc.next();
}
int q;
do
{
q = sc.nextInt();
a = 1;
b = 1;
for(i = 2; i < q; i++)
{
if(q % i == 0)
{
b = 0;
}
}
if(b == 0)
{
a = 0;
System.out.println("To nie jest liczba pierwsza.");
System.out.print("Podaj liczbe pierwsza: ");
sc.next();
}
} while(a == 0);
System.out.println("q = " +q);
int n = p * q;
int e;
}
}