Soru Java'da hata alıyorum

elgin67653

Öğrenci
Katılım
17 Aralık 2019
Mesajlar
10
Reaksiyon puanı
8
Puanları
3
Yaş
41
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
Müdavim
Katılım
24 Kasım 2020
Mesajlar
6,334
Çözümler
3
Reaksiyon puanı
6,510
Puanları
1,708
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
Müdavim
Katılım
8 Şubat 2014
Mesajlar
8,658
Çözümler
3
Reaksiyon puanı
3,782
Puanları
1,358
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ş
41
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
Müdavim
Katılım
24 Kasım 2020
Mesajlar
6,334
Çözümler
3
Reaksiyon puanı
6,510
Puanları
1,708
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.
 

Emnn

Profesör
Emektar
Müdavim
Katılım
3 Mayıs 2021
Mesajlar
2,233
Çözümler
8
Reaksiyon puanı
1,939
Puanları
358
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