Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Java Sorularım (Takıldıkça Soru Eklenecek)


Buddha

Öne çıkan mesajlar

Şöyle yaptım;


import java.util.Scanner;
public class AsalSayilar{

public static void main(String asal[]){

Scanner klv = new Scanner(System.in);

long yeniSayi = 0;
long girilenSayi;
long sayac = 1;

System.out.print("Bir tam sayi giriniz: ");
girilenSayi = klv.nextLong();
System.out.println();

for (long i=0; i<=girilenSayi; i++){



long yeniSayi = Math.pow(2,i);
yeniSayi = yeniSayi - 2;


if (yeniSayi%2 = 0){

System.out.println(sayac + ". Asal Sayi: " + yeniSayi);
sayac++;

}


else continue;





}
System.out.println();
System.out.println("Toplam " + (sayac-1) + " Asal Sayi Bulundu!");
}
}


Math.pow kısmında üs 2 üzeri i değişkeni yapmam gerekiyor. Heralde ben saçmaladım orda tam oalrak ne yapmam lazım?
Link to comment
Sosyal ağlarda paylaş

aquila said:

math import edicen, sonra pow methodunu kullanican. yanlissam duzeltsin biri.


Abi mesela Math.random'u biliyorum onun için import herangi bişey yapmadan kullanabiliyoruz.

Şuan şöyle;


import java.util.Scanner;
public class AsalSayilar{

public static void main(String asal[]){

Scanner klv = new Scanner(System.in);

long yeniSayi;
long girilenSayi;
long sayac = 1;

System.out.print("Bir tam sayi giriniz: ");
girilenSayi = klv.nextLong();
System.out.println();

for (long i=0; i<=girilenSayi; i++){



yeniSayi = Math.pow(2,i);
yeniSayi = yeniSayi - 2;


if (yeniSayi%2 == 0){

System.out.println(sayac + ". Asal Sayi: " + yeniSayi);
sayac++;

}


else continue;





}
System.out.println();
System.out.println("Toplam " + (sayac-1) + " Asal Sayi Bulundu!");
}
}


Math.pow satırında possible loss of precision hatası veriyor?
Link to comment
Sosyal ağlarda paylaş

cabot said:


yeniSayi = (long) Math.pow(2,i);


Böyle yapınca çalıştı kalanalrıda bitirdim ödev tamam. Fakat benim merak ettiğim neden oraya (long) koyduk. yeniSayi ve i zaten long 2 de tam sayı. Neden oraya long koyma gereği duyduk? Yani tamsayıyı tam sayıyla çarpacak sürekli sonuç her türlü tam sayı
Link to comment
Sosyal ağlarda paylaş

Yani 2 üzeri 2yi 4.0 olarak çıkarıyor?

diğer sorumda şu. Math pow kullanmadan sayının üzerini ben alayım dedim şu şekilde;


import java.util.Scanner;
public class AsalSayilar{

public static void main(String asal[]){

Scanner klv = new Scanner(System.in);

long yeniSayi;
long girilenSayi;
long sayac = 1;
int us = 2;
long sonuc = 1;
System.out.print("Bir tam sayi giriniz: ");
girilenSayi = klv.nextLong();
System.out.println();

for (long i=0; i<=girilenSayi; i++){

if(i==1 || i==0){
continue;
}

for(long y=0; y<=i; y++){


sonuc = sonuc * 2;

}


sonuc = sonuc - 2;


if (sonuc%i == 0){

System.out.println(sayac + ". Asal Sayi: " + i);
sayac++;

}


else continue;

}


System.out.println();
System.out.println("Toplam " + (sayac-1) + " Asal Sayi Bulundu!");


}

}



Üs alma fonksiyonumun neresi yanlış? Mesela 50 giriyorum sonuç şu;

1.Asal Sayi: 2
2.Asal Sayi: 6
3.Asal Sayi: 11
4.Asal Sayi: 13
Link to comment
Sosyal ağlarda paylaş

Deacon said:

Bir de bu float'in double'in bilgisayarda nasil gosterildigini bilmiyorsan ogren. Hatta tamsayilarinkini de ogren.


Abi nasıl göründüğünü biliyorumda Math.pow şimdi akiladan öğrendim bu komutu. Math pow'un sonucunun double olduğunu bilmiyordum bilsem hata yapmazdım.

Üstteki mesajımı güncelledim math pow kullanmadan döngü ile üs almaya çalıştım sonuç yanlış çıkıyor sizce nerde hata yaptım? (Math.pow ile yaptıgım çalışıyor o sağlam)
Link to comment
Sosyal ağlarda paylaş

Söyledikleriniz dikkate alınacak. Fakat diğer sorum havada kaldı. Math.pow kullanmadan kendim üs alma döngüsü oluşturdum şöyle oldu;


import java.util.Scanner;
public class AsalSayilar{

public static void main(String asal[]){

Scanner klv = new Scanner(System.in);

long yeniSayi;
long girilenSayi;
long sayac = 1;
int us = 2;
long sonuc = 1;
System.out.print("Bir tam sayi giriniz: ");
girilenSayi = klv.nextLong();
System.out.println();

for (long i=0; i<=girilenSayi; i++){

if(i==1 || i==0){
continue;
}

for(long y=0; y<=i; y++){


sonuc = sonuc * 2;

}


sonuc = sonuc - 2;


if (sonuc%i == 0){

System.out.println(sayac + ". Asal Sayi: " + i);
sayac++;

}


else continue;

}


System.out.println();
System.out.println("Toplam " + (sayac-1) + " Asal Sayi Bulundu!");


}

}



Üs alma fonksiyonumun neresi yanlış? Mesela 50 giriyorum sonuç şu;

1.Asal Sayi: 2
2.Asal Sayi: 6
3.Asal Sayi: 11
4.Asal Sayi: 13

Sadece üs almayı ayrı çalıştırınca oluyor. Ama uygulamada asal sayıları yanlışbuluyor. Aynı uygulama mathpow ile düzgün çalışıyor. E benim üs almamda doğru çalışıyor yanlış nerde?
Link to comment
Sosyal ağlarda paylaş

2^50 dediğin çok büyük bi sayı. 32 bite sığmıyo kafadan. Koda bakmadım ama daha ufak sayılarla çalışması lazım. Her ihtimale karşı yazayım bi fonksiyon



public static long Pow(long in_value, int pow)
{
long out_value = 1;
for(int i = 0; i < pow; ++i)
out_value *= in_value;
return out_value;
}
Link to comment
Sosyal ağlarda paylaş

math.pow sığıyor ama long yapınca? Aynı uygulama math pow ile calısıyor benim döngü ile yanlış sonuç veriyor.

Oha haklısın abi mesela 10000 girdiğimde devamı gelmiyor. Ne yapacaz şimdi longdan daha uzun değişken görmedik biz. Hintlilerin sistemi java da yalan mı oldu yani?
Link to comment
Sosyal ağlarda paylaş

  • 2 hafta sonra ...
Auberon said:

Benim de java ile ilgili bir sorunum var yeni konu açmak istemedim. Kardeşimin bir ödevi var Ona yardıma kasıyorum ama windows 7 64 bit ve office 2003 için java access bağlantısını nasıl yapacağımızı bulamadık. nasıl yapılır bir yol gösterebilir misiniz


office'in 64 bit olması lazım. Ms Access ile mi bağlantı kurmaya çalışıyorsunuz ?
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...