Bu yazıda, kullanıcıdan alınan bir sayının asal olup olmadığını kontrol eden bir program yazacağız. Ardından, bu kodu geliştirerek 1 ile 1000 arasındaki tüm asal sayıları ekrana yazdıran bir program oluşturacağız. Hem Java’da döngüleri ve koşullu ifadeleri nasıl kullanacağınızı öğreneceksiniz hem de algoritma mantığınızı geliştireceksiniz.
Asal Sayı Nedir?
Asal sayı, yalnızca 1 ve kendisi dışında hiçbir sayıya tam bölünmeyen 1’den büyük doğal sayılardır. Örneğin:
- 2, 3, 5, 7, 11 gibi sayılar asaldır.
- 4, 6, 8, 9, 10 gibi sayılar asal değildir çünkü en az bir tane daha böleni vardır.
Şimdi, ilk olarak kullanıcıdan alınan bir sayının asal olup olmadığını kontrol eden Java kodunu yazalım ve parça parça inceleyelim.
İSTENEN(1)
Kullanıcıdan alınan sayının asal sayı olup olmadığını ekrana yazdıran java kodunu yazınız.
ÇÖZÜM:
import java.util.Scanner;
public class AsalSayiKontrol {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Kullanıcıdan bir sayı alınır
System.out.print("Bir sayı girin: ");
int sayi = scanner.nextInt();
// Asal sayı olup olmadığını kontrol etme
boolean asalMi = true;
if (sayi <= 1) {
asalMi = false; // 1 ve daha küçük sayılar asal değildir
} else {
for (int i = 2; i <= Math.sqrt(sayi); i++) {
// Sayının kareköküne kadar bölünebilirlik kontrolü yapılır
if (sayi % i == 0) {
asalMi = false; // Eğer herhangi bir bölen bulunursa asal değildir
break;
}
}
}
// Sonuç yazdırılır
if (asalMi) {
System.out.println(sayi + " bir asal sayıdır.");
} else {
System.out.println(sayi + " bir asal sayı değildir.");
}
scanner.close();
}
}
KODUN AÇIKLAMASI:
import java.util.Scanner;
- Bu satırda Scanner sınıfını içeri aktarıyoruz. Bu sınıf, kullanıcıdan veri almak için kullanılır.
public class AsalSayiKontrol {
public static void main(String[] args) {
- public class AsalSayiKontrol:
AsalSayiKontrol
adında bir sınıf (class) oluşturuyoruz. Java’da her şey bir sınıf içinde yazılır. - public static void main(String[] args): Bu, Java programlarının başlama noktasıdır.
main
metodu her Java programında bulunur ve programın çalışmaya başladığı yerdir.
Scanner scanner = new Scanner(System.in);
- Scanner scanner = new Scanner(System.in): Bu satır, Scanner sınıfından bir nesne oluşturur. Bu nesneyle kullanıcıdan veri alacağız.
System.out.print("Bir sayı girin: ");
int sayi = scanner.nextInt();
- System.out.print(“Bir sayı girin: “): Kullanıcıya sayı girmesi için ekranda bir mesaj gösteriyoruz.
- int sayi = scanner.nextInt(): Kullanıcıdan bir tam sayı (integer) alıyoruz ve bu sayıyı
sayi
değişkenine atıyoruz.
boolean asalMi = true;
- boolean asalMi = true: Bu satırda bir boolean (doğru/yanlış) değişkeni oluşturuyoruz ve başlangıçta true değerini atıyoruz. Bu değişken, sayının asal olup olmadığını belirleyecek.
if (sayi <= 1) {
asalMi = false;
} else {
- if (sayi <= 1): Eğer kullanıcı 1 ya da daha küçük bir sayı girerse, bu sayı asal olamaz, bu yüzden asalMi değişkenini false yapıyoruz.
for (int i = 2; i <= Math.sqrt(sayi); i++) {
- for (int i = 2; i <= Math.sqrt(sayi); i++): Burada bir for döngüsü başlatıyoruz. Bu döngü, sayıyı 2’den başlayarak sayının kareköküne kadar bölen olup olmadığını kontrol eder. Math.sqrt(sayi), sayının karekökünü alır. Bu optimizasyon sayesinde, gereksiz kontrollerden kaçınmış oluruz.
if (sayi % i == 0) {
asalMi = false;
break;
}
- if (sayi % i == 0): Eğer sayı, döngüdeki i değeriyle tam bölünüyorsa, bu sayı asal değildir. Bu durumda asalMi‘yı false yapıyoruz ve döngüyü break ile kırıyoruz, çünkü sayıya başka bölen aramamıza gerek kalmaz.
}
if (asalMi) {
System.out.println(sayi + " bir asal sayıdır.");
} else {
System.out.println(sayi + " bir asal sayı değildir.");
}
- if (asalMi): Eğer asalMi hala true ise, sayının asal olduğu anlamına gelir ve ekrana “asal sayıdır” yazdırılır.
- Eğer asalMifalse ise, sayının asal olmadığı bildirilir.
scanner.close();
- scanner.close(): Kullanıcıdan veri aldıktan sonra Scanner nesnesini kapatıyoruz. Bu, kaynakları serbest bırakmak için iyi bir uygulamadır.
İSTENEN(2)
1-1000 arasındaki tüm asal sayıları ekrana yazdıran java kodunu yazınız.
ÇÖZÜM:
public class AsalSayilar {
public static void main(String[] args) {
System.out.println("1 ile 1000 arasındaki asal sayılar:");
// 1 ile 1000 arasındaki tüm sayılar kontrol edilir
for (int sayi = 2; sayi <= 1000; sayi++) {
boolean asalMi = true;
for (int i = 2; i <= Math.sqrt(sayi); i++) {
// Sayının kareköküne kadar bölen kontrolü yapılır
if (sayi % i == 0) {
asalMi = false; // Bölen bulunduysa asal değildir
break;
}
}
if (asalMi) {
System.out.print(sayi + " "); // Asal sayı ise ekrana yazdırılır
}
}
}
}
KODUN AÇIKLAMASI:
public class AsalSayilar {
public static void main(String[] args) {
System.out.println("1 ile 1000 arasındaki asal sayılar:");
- public class AsalSayilar:
AsalSayilar
adında yeni bir sınıf oluşturuyoruz. - System.out.println(“1 ile 1000 arasındaki asal sayılar:”): Ekrana “1 ile 1000 arasındaki asal sayılar:” yazdırıyoruz. Bu mesaj, kullanıcının ne göreceği hakkında bilgi verir.
for (int sayi = 2; sayi <= 1000; sayi++) {
- for (int sayi = 2; sayi <= 1000; sayi++): 2’den başlayarak 1000’e kadar tüm sayıları kontrol etmek için bir for döngüsü başlatıyoruz.
boolean asalMi = true;
- boolean asalMi = true: Her bir sayı için asalMi değişkenini true olarak başlatıyoruz. Eğer sayıya bir bölen bulursak, bu değeri false yapacağız.
for (int i = 2; i <= Math.sqrt(sayi); i++) {
- for (int i = 2; i <= Math.sqrt(sayi); i++): Bu döngü, her bir sayıyı 2’den başlayarak sayının kareköküne kadar bölenlere göre kontrol eder.
if (sayi % i == 0) {
asalMi = false;
break;
}
- if (sayi % i == 0): Eğer sayıya bölen bir sayı bulunursa, bu sayının asal olmadığına karar verilir. asalMi‘yı false yapıyoruz ve döngüyü break ile kırıyoruz.
if (asalMi) {
System.out.print(sayi + " ");
}
- if (asalMi): Eğer asalMi hala true ise, bu sayıyı asal olarak kabul ediyoruz ve ekrana yazdırıyoruz. Sayılar bir arada yazılacak şekilde yazdırılır.
SONUÇ:
- İlk kod, kullanıcıdan alınan bir sayının asal olup olmadığını kontrol ediyor ve sonucu ekrana yazdıran bir programdır.
- İkinci kod ise 1 ile 1000 arasındaki asal sayıları ekrana listeleyen bir programdır.
No responses yet