Soru Java'da hata alıyorum

Bu konuyu okuyanlar

elgin67653

Öğrenci
Katılım
17 Aralık 2019
Mesajlar
10
Reaksiyon puanı
8
Puanları
3
Yaş
40
Arkadaşlar java programlama dilinde henüz yeniyim ve şöyle bir uygulama yaptım. Sorun şu ki number1 değişkenine 25 değerini verdim ve doğal olarak 25 bir asal sayı olmadığından programın "Asal sayı değildir" mesajını vermesi gerek ama programı tam tersini "sayı asaldır" mesajını veriyor burada nerede hata yapıyorum? Çok inceledim ama bulamadım. Yardımcı olabilir misiniz?
public class Main { public static void main(String[] args) { int number1 = 25; Boolean isprime=true; for (int i = 2; i < number1; i++) { if (number1 % i == 0){ isprime=false; }else{ isprime=true; } } if(isprime) { System.out.println("Sayı asaldır."); }else { System.out.println("Sayı asal değildir."); } } }
test.jpg
 
Çözüm
Java:
public class Main {
    public static void main(String[] args) {
        int number1 = 15;
        Boolean isprime = false;
        int say = 0;
       
        for (int i = 2; i < number1 ; i++){
           
            if (number1 % i == 0){
                say ++;
            }
        }
       
        if ( say == 0){
            System.out.print("sayi asal");
        }
        else{
            System.out.print("sayi asal değil");
        }
    }
}
Mesaj otomatik birleştirildi:

İlla bool bir değişken ile yapmak isterseniz:



Java:
public class Main {
    public static void main(String[] args) {
        int number1 = 19;
        Boolean isprime = true;
        int say = 0;
       
        for (int i = 2; i < number1 ; i++){...

basit

Müdavim
Cezalı
Katılım
24 Kasım 2020
Mesajlar
6,306
Çözümler
3
Reaksiyon puanı
6,528
Puanları
113
Asal sayı algoritman yanlış.

Algoritma böyle olmalıdır;
Java:
void isPrime(int number){

   int sayı = 0;

   for(int i = 1; i<=number){

      if(number%i == 0){
        sayi +=1;
      }
   }
 
if(sayi == 2){
   "Bu bir asal sayı";
  }else {"asal sayı değil";}


}


Kısaca bir pozitif 1'den büyük tam sayı, kendisine yada 1'e bölünüyorsa bir sayı, o asal sayıdır.
Pozitif, negtif ayrımını artık yaparsın kendi :D.
 
Son düzenleme:

kmurat

Müdavim
Katılım
8 Şubat 2014
Mesajlar
8,486
Çözümler
3
Reaksiyon puanı
3,709
Puanları
113
Neden döngüye aldın? Zaten tek bir değer var ve o değeri bir artırdığında asal sayı (26) oluyor.
 

elgin67653

Öğrenci
Katılım
17 Aralık 2019
Mesajlar
10
Reaksiyon puanı
8
Puanları
3
Yaş
40
Asal sayı algoritman yanlış.

Algoritma böyle olmalıdır;
Java:
void isPrime(int number){

   int sayı = 0;

   for(int i = 1; i<=number){

      if(number%i == 0){
        sayi +=1;
      }
   }
 
if(sayi == 2){
   "Bu bir asal sayı";
  }else {"asal sayı değil";}


}


Kısaca bir pozitif 1'den büyük tam sayı, kendisine yada 1'e bölünüyorsa bir sayı, o asal sayıdır.
Pozitif, negtif ayrımını artık yaparsın kendi :D.
Hocam sizinkinde diyelim ki number değişkenine 23 yazdık. 23 bir asal sayı ve 23%i işleminde i değişkeni 23 değerini alabildiği için 23%23 işleminden sonuç sıfır çıkacaktır ve program bu bir asal sayı değildir mesajı verir. Bu kodda da sonuç yanlış çıkıyor.
Mesaj otomatik birleştirildi:

Neden döngüye aldın? Zaten tek bir değer var ve o değeri bir artırdığında asal sayı (26) oluyor.
Asal sayılar düzensiz olduğundan 1 arttırmak her zaman işe yaramayabilir. number1 değişkenine 8 verdik 1 arttırdığımızda dokuz olur ama asal değil
 

basit

Müdavim
Cezalı
Katılım
24 Kasım 2020
Mesajlar
6,306
Çözümler
3
Reaksiyon puanı
6,528
Puanları
113
Hocam sizinkinde diyelim ki number değişkenine 23 yazdık. 23 bir asal sayı ve 23%i işleminde i değişkeni 23 değerini alabildiği için 23%23 işleminden sonuç sıfır çıkacaktır ve program bu bir asal sayı değildir mesajı verir. Bu kodda da sonuç yanlış çıkıyor.
Mesaj otomatik birleştirildi:


Asal sayılar düzensiz olduğundan 1 arttırmak her zaman işe yaramayabilir. number1 değişkenine 8 verdik 1 arttırdığımızda dokuz olur ama asal değil
Vermez vermez.
23%1 yapacak = 0
23%23 yapacak = 0

yani iki kere bölünecek.
Bu da asal sayıdır diyecek.
 

Eminkrkt

Jet Sesi, Özgürlüğün Sesidir!
Moderatör
Katılım
3 Mayıs 2021
Mesajlar
2,179
Çözümler
8
Reaksiyon puanı
1,779
Puanları
113
Java:
public class Main {
    public static void main(String[] args) {
        int number1 = 15;
        Boolean isprime = false;
        int say = 0;
       
        for (int i = 2; i < number1 ; i++){
           
            if (number1 % i == 0){
                say ++;
            }
        }
       
        if ( say == 0){
            System.out.print("sayi asal");
        }
        else{
            System.out.print("sayi asal değil");
        }
    }
}
Mesaj otomatik birleştirildi:

İlla bool bir değişken ile yapmak isterseniz:



Java:
public class Main {
    public static void main(String[] args) {
        int number1 = 19;
        Boolean isprime = true;
        int say = 0;
       
        for (int i = 2; i < number1 ; i++){
           
            if (number1 % i == 0){
                isprime = false;
                break;
            }
        }
       
        if (isprime) {
            System.out.println(number1 + " sayısı asal");
        } else {
            System.out.println(number1 + " sayısı asal değildir");
        }
    }
}
 
Son düzenleme:
Çözüm
Üst