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.
Arama butonu
Bu konudaki kullanıcılar: 1 misafir
17
Cevap
6332
Tıklama
0
Öne Çıkarma
Php de Girilen 2 sayı arasındaki Asal sayıları bulan program. yardım
C
15 yıl (1209 mesaj)
Yüzbaşı
Konu Sahibi

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



C
15 yıl (1209 mesaj)
Yüzbaşı
Konu Sahibi

O
15 yıl (3358 mesaj)
Yarbay

[CODE]<?php

/**
* @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 >

F
15 yıl (670 mesaj)
Teğmen

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


Bu mesaja 2 cevap geldi.
O
15 yıl (3358 mesaj)
Yarbay

başka bir fikrin var mı :) Büyük asal sayıları bulmak neden çok zor sanıyorsun :)


Bu mesaja 1 cevap geldi.
M
15 yıl (97 mesaj)
Çavuş

quote:

Orijinalden alıntı: cool_eagle

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ı ? ....





< Bu mesaj bu kişi tarafından değiştirildi mrtkprc* -- 13 Nisan 2011; 11:42:27 >
Bu mesaja 1 cevap geldi.
O
15 yıl (3358 mesaj)
Yarbay

quote:

Orijinalden alıntı: mrtkprc*


quote:

Orijinalden alıntı: cool_eagle

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 :)


Bu mesaja 1 cevap geldi.
M
15 yıl (97 mesaj)
Çavuş

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 ....


Bu mesaja 1 cevap geldi.
O
15 yıl (3358 mesaj)
Yarbay

bknz: üstteki kod :)



F
14 yıl (66 mesaj)
Çavuş

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.

yoksa böyle.


Bu mesaja 1 cevap geldi.
G
14 yıl (21343 mesaj)
Yarbay

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.


Bu mesaja 1 cevap geldi.
X
14 yıl (95 mesaj)
Çavuş

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.


Bu mesaja 1 cevap geldi.
İ
14 yıl (20 mesaj)
Onbaşı

quote:

Orijinalden alıntı: XapH

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


Bu mesaja 1 cevap geldi.
D
14 yıl (1185 mesaj)
Yüzbaşı

quote:

Orijinalden alıntı: blghn27


quote:

Orijinalden alıntı: XapH

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.

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.
İ
14 yıl (20 mesaj)
Onbaşı

quote:

Orijinalden alıntı: dogauzun


Umarım çok karışık anlatmadım


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.
L
14 yıl (686 mesaj)
Yüzbaşı

Eeee? Soruyu soran arkadaş tatmin oldu mu? Herhangi bir dönüş yapmamış.


Bu mesaja 1 cevap geldi.
M
14 yıl (163 mesaj)
Teğmen

 
class Program
{
static void Main(string[] args)
{


Console.Write("Sayı = ");
string girilen = Console.ReadLine();
int sayi = Convert.ToInt32(girilen);
for (int i = 2; i < sayi; i++)
{
bool sayiAsalMi = true;
for (int j = 2; j < i; j++)
{
if (i % j == 0)
{
sayiAsalMi = false;
break;
}
}
if (sayiAsalMi == true)
{

Console.Writeline(i.ToString());
}

}

Console.ReadKey();
}

}
}.


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.
A
14 yıl (1348 mesaj)
Binbaşı

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;
}
}

if (asalOlmayan_bulundu == 0)
{

Array.Resize(ref asal, asal.Length + 1);
asal[asal.Length - 1] = i;

}
asalOlmayan_bulundu = 0;
}
DateTime asalBitis = DateTime.Now;
DateTime asalGosterBaslangic = DateTime.Now;
for (int i = 0; i < asal.Length; i++)
{
Console.Write(asal[i] + " ");
}
DateTime asalGosterBitis = DateTime.Now;

Console.Write("\n\n1 ile "+maksimum+" arasında toplam " + asal.Length + " asal sayı bulundu");

Console.Write("\n\nAsal sayıların hesaplanma süresi:"+(asalBitis-asalbaslangic)+"\nAsal sayıların gösterim süresi:"+(asalGosterBitis-asalGosterBaslangic)+"\nToplam süre:"+(asalGosterBitis-asalbaslangic));
Console.Read();
}
}


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 >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.