Şimdi Ara

Php de Girilen 2 sayı arasındaki Asal sayıları bulan program. yardım

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
4 Misafir - 4 Masaüstü
5 sn
18
Cevap
0
Favori
6.319
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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



    _____________________________
  • yok mu yardım edebilecek?
    _____________________________
  • [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 >
    _____________________________




  • 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
  • başka bir fikrin var mı :) Büyük asal sayıları bulmak neden çok zor sanıyorsun :)
    _____________________________
  • 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 >
    _____________________________
  • 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 :)
    _____________________________
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • 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 ....
    _____________________________
  • bknz: üstteki kod :)
    _____________________________
  • 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.
    _____________________________
  • 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.
    _____________________________
  • 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
    _____________________________
  • 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 >
    _____________________________




  • 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.
    _____________________________
  • Eeee? Soruyu soran arkadaş tatmin oldu mu? Herhangi bir dönüş yapmamış.
    _____________________________
  •  
    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 >
    _____________________________
    Akıllı bir kafa,daima,onu haksız çıkarmaya çalışan budala bulur...




  • 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 >
    _____________________________




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.