DonanımHaber Mini sürüm 2 Ocak 2026 tarihi itibariyle kullanımdan kalkacaktır. Bunun yerine daha hızlı bir deneyim için DH Android veya DH iOS uygulamalarını kullanabilirsiniz.
Matematikte asal sayıların tanımı 1 ve kendisine bölünebilen sayılardır. Modla yapmaya çalıştım bir şeyler ama tam olarak istediğim sonucu alamadım. Yardımlarınızı bekliyorm. Şimdiden tşkler
ben 13675489 şeklinde bi sayı girersem ne olacak. Program bunun asal sayı olduğunu anlamak için bu sayıyı, bu sayıya kadar olan her sayıya bölmeye çalışacak
ben 13675489 şeklinde bi sayı girersem ne olacak. Program bunun asal sayı olduğunu anlamak için bu sayıyı, bu sayıya kadar olan her sayıya bölmeye çalışacak
Sorduğunuz soru : Klavyeden girilen bir sayının asal sayı olup olmadığını mı bulan program yoksa iki sayı girilip arasındaki asal sayıları bulan program mı ? ....
ben 13675489 şeklinde bi sayı girersem ne olacak. Program bunun asal sayı olduğunu anlamak için bu sayıyı, bu sayıya kadar olan her sayıya bölmeye çalışacak
Sorduğunuz soru : Klavyeden girilen bir sayının asal sayı olup olmadığını mı bulan program yoksa iki sayı girilip arasındaki asal sayıları bulan program mı ? ....
Onun dediği bir sayı girmek ama ikisinin yapılışı da aşağı yukarı aynı mantık.. O işlemin saçma olduğunu düşünüyor ama büyük asal sayıların neden çok zor bulunduğunu düşünmedi :)
algoritmasının temelinde döngü bilgisi yatıyor asal sayımı olup olmadığı çok kolay... alırsın sayıyı sayıya kadar döndürürsün for döngüsüyle 1 ve kendin başka böleni varsa zaten asal sayıdır onun için bir değişken atarsın mod matematik operatörünü kullanarak kalan sıfır ise önceden tanımladığımız bir değişkeni bir arttırız anlarız asal mı olup olmadığını. iki sayı arasında ki asal sayıları da anlamak için döngü ilk sayıdan ikinci sayıya kadar götürürüz ....
eğer istiyorsan, asal sayıları taradıktan sonra bir dosya ya da db'ye kayıt eder ordan search edersin, sonra loopa sokarsın kaldığın yerden, yeni asalları da db'ye eklersin.
tüm sayıları teker teker taramadan asal sayıyı bulan bir matematiksel formül var. zaten multithread olan programlar asal sayı ararken bunu kullanıyorlar.
ama burdaki amaç döngüler üzerinde alıştırma yapmak.
Bir sayının asal olduğunu anlamak için o sayıyı kendisinin köküne kadar olan sayılara bölmek yeterli. Bu matematiksel olarak kanıtlanmış bir şey. Böyle bir programda programın çalışma süresini oldukça kısaltır basit bir işlemle.
Bir sayının asal olduğunu anlamak için o sayıyı kendisinin köküne kadar olan sayılara bölmek yeterli. Bu matematiksel olarak kanıtlanmış bir şey. Böyle bir programda programın çalışma süresini oldukça kısaltır basit bir işlemle.
kardeş dediğin mantıklı gelmedi ama tersinide kanıtlayamıyorum :S ispatını paylaşıarak aydınlatsan bizi
Bir sayının asal olduğunu anlamak için o sayıyı kendisinin köküne kadar olan sayılara bölmek yeterli. Bu matematiksel olarak kanıtlanmış bir şey. Böyle bir programda programın çalışma süresini oldukça kısaltır basit bir işlemle.
kardeş dediğin mantıklı gelmedi ama tersinide kanıtlayamıyorum :S ispatını paylaşıarak aydınlatsan bizi
ispatı basit. matematiksel tekniklere pek dalmadan olabildiğince basit anlatmaya çalışacağım. Örnek üzerinden gidelim.
X = a * b der isek asal olmayan bir sayıya. a nın X in karekökünden büyük her değeri için, karekökünden küçük bir de b değeri olduğunu görebiliriz. Çünkü sadece karekök durumunda a ile b birbirine eşit olur diğer durumlarda ise biri azalırken diğeri artmıştır eşitliği sağlamak için. Bu durumda karekökten büyük her çarpanın çarpıldığı sayı karekökten küçük olmalıdır.
Yani:
X = a*a ise
bu a lardan ilki arttırılırsa ikincisi de azaltılmalıdır ki çarpım sabit kalsın. O zaman mantıken karekökten büyük her çarpanın çarpıldığı sayı daima karekökten küçük olur. Dolayısıyla herhangi bir sayının çarpanları için 2 durum vardır.
ya bir adet karekökten küçük bir sayı ile bir adet karekökten büyük bir sayıyı çarpıp elde edeceğiz. ya da 2 tane karekökü birbiriyle çarpıp elde edeceğiz. eğer 2 tane karekökü çarpıp elde edemiyorsak ve de karekökten küçük bir tane de bulamıyorsak devam edip karekökten büyüklere bakmaya gerek yoktur. Eğer karekökten büyük çarpan olacak olsaydı bir tane de karekökten küçük çarpan olması gerekirdi ve biz onu bulamadık!
12 li örneğe geri dönerseniz mantığı anlarsınız. dikkat ederseniz biyerden sonra sadece yer değiştirmeye başladı sayılar. o yer değiştirmeye başlama sınırı kareköktür yukarıda açıkladığım gibi.
class Program { static void Main(string[] args) { int asalOlmayan_bulundu=0; int maksimum = 250000; Console.Write("\n1 ile "+maksimum+" arasındaki asal sayılar\n\nHesaplamaya başlamak için enter'a basın\n"); Console.ReadLine(); Console.Write("hesaplanıyor..."); DateTime asalbaslangic = DateTime.Now; int[] asal = new int[1]; asal[0] = 2; for (int i = 3; i <= maksimum;i++ ) {
for (int j = 0; j < asal.Length; j++) { if ((i % asal[j]) == 0 && (i != asal[j])) { asalOlmayan_bulundu = 1; break; } }
Buda iş görür sanırım, asal sayıyı bulmak için o sayıya kadar olan tüm sayıları tek tek kontrol etmektense o sayıya kadar bulunan asal sayıları kontrol etirmek daha mantıklı,mesela bir sayı 2 ye bölünmüyorsa 2nin katlarınada bölünmiyceğinden 2 nin katlarını hesaba dahil etmemek gereksiz iş yükünden kurtulmayı sağlar.
< Bu mesaj bu kişi tarafından değiştirildi atyay -- 7 Ağustos 2011; 6:17:07 >
Bu mesaja 1 cevap geldi. Cevapları Gizle
/**
* @author oralunal
* @copyright 2011
*/
function asalSayiBul($x, $y){
if($x>$y){
$degerler=array();
for($i=$y; $i<=$x; $i++){
$c=0;
for($a=2; $a<$i; $a++){
if($i%$a!=0){ $c+=1; }
}
if($c==($i-$a)){ $degerler[]=$i; }
}
}
elseif($y<$x){
$degerler=array();
for($i=$x; $i<=$y; $i++){
$c=0;
for($a=2; $a<$i; $a++){
if($i%$a!=0){ $c+=1; }
}
if($c==($i-$a)){ $degerler[]=$i; }
}
}
else{
$degerler[]="İki sayıyı birbirine eşit girdiniz.";
}
return $degerler;
}
?>[/CODE]
Çalıştırmadım ama bu şekilde yapabilirsin herhalde ;)
< Bu mesaj bu kişi tarafından değiştirildi oralunal -- 2 Nisan 2011; 0:41:05 >
Bu mesaja 2 cevap geldi. Cevapları Gizle
Bu mesaja 1 cevap geldi. Cevapları Gizle
Sorduğunuz soru : Klavyeden girilen bir sayının asal sayı olup olmadığını mı bulan program yoksa iki sayı girilip arasındaki asal sayıları bulan program mı ? ....
< Bu mesaj bu kişi tarafından değiştirildi mrtkprc* -- 13 Nisan 2011; 11:42:27 >
Bu mesaja 1 cevap geldi. Cevapları Gizle
Onun dediği bir sayı girmek ama ikisinin yapılışı da aşağı yukarı aynı mantık.. O işlemin saçma olduğunu düşünüyor ama büyük asal sayıların neden çok zor bulunduğunu düşünmedi :)
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesaja 1 cevap geldi. Cevapları Gizle
yoksa böyle.
Bu mesaja 1 cevap geldi. Cevapları Gizle
ama burdaki amaç döngüler üzerinde alıştırma yapmak.
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesaja 1 cevap geldi. Cevapları Gizle
kardeş dediğin mantıklı gelmedi ama tersinide kanıtlayamıyorum :S ispatını paylaşıarak aydınlatsan bizi
Bu mesaja 1 cevap geldi. Cevapları Gizle
ispatı basit. matematiksel tekniklere pek dalmadan olabildiğince basit anlatmaya çalışacağım. Örnek üzerinden gidelim.
12 sayısının bölenlerini inceleyelim.
1 * 12 = 12
2 * 6 = 12
3 * 4 = 12
4 * 3 = 12
6 * 2 = 12
12 * 1 = 12
Burada görebileceğiniz üzere eğer
X = a * b der isek asal olmayan bir sayıya. a nın X in karekökünden büyük her değeri için, karekökünden küçük bir de b değeri olduğunu görebiliriz. Çünkü sadece karekök durumunda a ile b birbirine eşit olur diğer durumlarda ise biri azalırken diğeri artmıştır eşitliği sağlamak için. Bu durumda karekökten büyük her çarpanın çarpıldığı sayı karekökten küçük olmalıdır.
Yani:
X = a*a ise
bu a lardan ilki arttırılırsa ikincisi de azaltılmalıdır ki çarpım sabit kalsın. O zaman mantıken karekökten büyük her çarpanın çarpıldığı sayı daima karekökten küçük olur. Dolayısıyla herhangi bir sayının çarpanları için 2 durum vardır.
ya bir adet karekökten küçük bir sayı ile bir adet karekökten büyük bir sayıyı çarpıp elde edeceğiz. ya da 2 tane karekökü birbiriyle çarpıp elde edeceğiz. eğer 2 tane karekökü çarpıp elde edemiyorsak ve de karekökten küçük bir tane de bulamıyorsak devam edip karekökten büyüklere bakmaya gerek yoktur. Eğer karekökten büyük çarpan olacak olsaydı bir tane de karekökten küçük çarpan olması gerekirdi ve biz onu bulamadık!
12 li örneğe geri dönerseniz mantığı anlarsınız. dikkat ederseniz biyerden sonra sadece yer değiştirmeye başladı sayılar. o yer değiştirmeye başlama sınırı kareköktür yukarıda açıkladığım gibi.
Umarım çok karışık anlatmadım
< Bu mesaj bu kişi tarafından değiştirildi dogauzun -- 31 Temmuz 2011; 0:50:11 >
Bu mesaja 1 cevap geldi. Cevapları Gizle
gayet açıklayıcı bir antamdı
bende asal olup olmadığı öğrenilecek sayının yarısına kadar kontrol ettiriyordum artık bu yöntemide kullanırız.
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesaja 1 cevap geldi. Cevapları Gizle
C# ta yazılmış girilen sayıya kadar Asal Sayıları Bulan Kod!
Bunu Php ye çevirerek istediğini elde edebilirsin
< Bu mesaj bu kişi tarafından değiştirildi mehmet_bluefox -- 7 Ağustos 2011; 0:31:00 >
Bu mesaja 1 cevap geldi. Cevapları Gizle
Buda iş görür sanırım, asal sayıyı bulmak için o sayıya kadar olan tüm sayıları tek tek kontrol etmektense o sayıya kadar bulunan asal sayıları kontrol etirmek daha mantıklı,mesela bir sayı 2 ye bölünmüyorsa 2nin katlarınada bölünmiyceğinden 2 nin katlarını hesaba dahil etmemek gereksiz iş yükünden kurtulmayı sağlar.
< Bu mesaj bu kişi tarafından değiştirildi atyay -- 7 Ağustos 2011; 6:17:07 >