Bir Sayının Tek Mi Çift Mi Oldugunu Gösteren Program
-
monoton bunu yazdı:
-----------------------------bide şunu yazın 1 den 250000 e kadar olan asal sayıları en hızlı bulan program bu konuda kendine güvenen varsa sidik yarıştırabiliriz :)
-----------------------------http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes algoritmasinin C de uygulanmis hali. Malesef ben yazmadim :)
- #include
- #include
- #include
- #include
- int main(){
- int i;
- scanf("%i",&i);
- clock_t start, stop;
- double t = 0.0;
- assert((start = clock())!=-1);
- //create prime list
- int prime[i];
- int c1, c2, c3;
- //fill list with 0 - prime
- for(c1 = 2; c1 <= i; c1++){
- prime[c1] = 0;
- }
- //set 0 and 1 as not prime
- prime[0]=1;
- prime[1]=1;
- //find primes then eliminate their multiples (0 = prime, 1 = composite)
- for(c2 = 2;c2 <= (int)sqrt(i)+1;c2++){
- if(prime[c2] == 0){
- c1=c2;
- for(c3 = 2*c1;c3 <= i+1; c3 = c3+c1){
- prime[c3] = 1;
- }
- }
- }
- stop = clock();
- t = (double) (stop-start)/CLOCKS_PER_SEC;
- //print primes
- for(c1 = 0; c1 < i+1; c1++){
- }
- return 0;
- }
Bu da C++ ve Java implementasyonlari,Java implementation
public void runEratosthenesSieve(int upperBound) {
int upperBoundSquareRoot = (int) Math.sqrt(upperBound);
boolean[] isComposite = new boolean[upperBound + 1];
for (int m = 2; m <= upperBoundSquareRoot; m++) {
if (!isComposite[m]) {
System.out.print(m + " ");
for (int k = m * m; k <= upperBound; k += m)
isComposite[k] = true;
}
}
for (int m = upperBoundSquareRoot; m <= upperBound; m++)
if (!isComposite[m])
System.out.print(m + " ");
}
C++ implementation
void runEratosthenesSieve(int upperBound) {
int upperBoundSquareRoot = (int)sqrt((double)upperBound);
bool *isComposite = new bool[upperBound + 1];
memset(isComposite, 0, sizeof(bool) * (upperBound + 1));
for (int m = 2; m <= upperBoundSquareRoot; m++) {
if (!isComposite[m]) {
cout << m << " ";
for (int k = m * m; k <= upperBound; k += m)
isComposite[k] = true;
}
}
for (int m = upperBoundSquareRoot; m <= upperBound; m++)
if (!isComposite[m])
cout << m << " ";
delete [] isComposite;
} -
SpArK bunu yazdı:
-----------------------------monoton bunu yazdı:
-----------------------------bide şunu yazın 1 den 250000 e kadar olan asal sayıları en hızlı bulan program bu konuda kendine güvenen varsa sidik yarıştırabiliriz :)
-----------------------------Test Developed in Deterministic Running time Notes AKS primality test 2002 Yes O(log6+ε(n)) Fermat primality test No O(k · log2n · log log n · log log log n) fails for Carmichael numbers Lucas primality test Yes requires factorization of n − 1 Solovay–Strassen primality test 1977 No, error probability 2−k O(k·log3 n) Miller–Rabin primality test 1980 No, error probability 4−k O(k · log2 n · log log n · log log log n) Elliptic curve primality proving 1977 No O(log5+ε(n)) heuristic running time illa bu algoritmalari uygulatcan yani :)
not : senin algoritmanin complexity sini yaz bize :) ona gore bizde BigO hesaplari yapip yaristiririz be ustad :)
-----------------------------burdan deneyin algoritma benim
-
Antikky bunu yazdı:
-----------------------------g2k bunu yazdı:
-----------------------------
tahribat'ta böyle konular olması lazım işte. tartışma sitesine döndü artık iyice. yöneticilerin biraz daha sıkı olması lazım bu konuda bence.
-----------------------------ne istiyonuz hoca yarın 9 a bölümebilme kuralını 7 dilde yazıp veriyimmi?bugün bu yarın o olsun ha ne dersin?
1 seneye kalmaz tüm matematiği tüm dillerde nasıl yapılır öğrenmiş oluruz.aferin bize lan.
-----------------------------'böyle konular' derken neyi kastettiğimi anlayamıyorsan hiçbişey söylemiyorum. hani programlama, teknoloji, bilgisayar üzerine daha çok diyorum.
-
burdan deneyin algoritma benim
http://rapidshare.com/files/294794072/Project1.exe.html
-----------------------------Indirdim ama sadece .exe uzantili bir dosya cikti. Guvenlik politikalarim nedeniyle malesef acamam bu programi. Kod paylasmak istermisin burda veyahut yaptigin
algoritmanin calisma zamanini soylemek ?
-
SpArK bunu yazdı:
-----------------------------burdan deneyin algoritma benim
http://rapidshare.com/files/294794072/Project1.exe.html
-----------------------------Indirdim ama sadece .exe uzantili bir dosya cikti. Guvenlik politikalarim nedeniyle malesef acamam bu programi. Kod paylasmak istermisin burda veyahut yaptigin
algoritmanin calisma zamanini soylemek ?
-----------------------------verdiğin kodu denedim deli manyak bişi ama math kütüphanesi kullanılmış benim algoritmadan 3 kat daha hızlı.
burda
unsigned int s,k,i,c,r=250000;
char dak,san,sal;int main(int argc, char **argv)
{
printf("\n1 - %d arasi asal testi icin bir tusa basin\n",r);
getch();
struct time t,t1;
gettime(&t);
for(k=3;k<r;k+=2){
for(i=3;i<k/2;i+=2)
if(!(k%i)){
k+=2;i=3;
}
printf("%8d",k);
++c;
}
gettime(&t1);
dak=t1.ti_min-t.ti_min;
if(dak<0)
dak+=60;
san=t1.ti_sec-t.ti_sec;
if(san<0){
--dak;san+=60;
}
sal=t1.ti_hund-t.ti_hund;
if(sal<0){
--san;sal+=100;
}
printf("\n\n%d dakika %d saniye %d salisede \n\n1 %d arasi %d asal sayi bulundu\n",dak,san,sal,r,c+1/* +1 '2'için */);
getch();
return 0;
} -
biraz inceledimde iki algoritma hemen hemen aynı benim 2 ye böldüğüm yerde sqrt alınmış
-
SpArK bunu yazdı:
-----------------------------Acaba ben mi algoritmani yanlis yazdim diye, birazdan bende kontrol edeyim kendimi. Simdilik ekran goruntulerini koyayim;
-----------------------------abi 55, 65 falan çıkmış bunlar asal sayı değildir.Matematiksel olarak bir sayının asa sayı olması için ;
2,3,4,5,6,7,8,9,10 a bölünmemesi lazım diye 1 den 10 a kadar listeletsek
4 ü attık 2 var, 6 yı attık 2 ve 3 var, 8 i attık 4, 2 var, 9 u attık 3 var, 10 u attık 5, 2 var
geriye kalan
2,3,5,7 ye bölünüyor mu ;
11,13,17 => 2,3,5,7 ye bölünmez.Demek ki asal sayı.
isterse 67 olsunn.67 sayısı 2,3,5,7 ye bölünmez o halde asal sayıdır.
Kasmaya gerek yok bir sayı 2,3,5,7 ye bölünmüyorsa asal sayııdır abi.Mantıken bu
kuytul bunu yazdı:
-----------------------------
tamam da 11,13,17,23 ...vs bölünebilir 8 1 basamaklı sayılarda bile asallığını bulabilecek bir şey. Gazetede okumuştum ibm yapmıştı sanırım çok gelişmiş bi şey tabi
-----------------------------yukardaki mantıktan yola çıkarsak atıyorum 77 bir asal sayı mı ? değildir çünkü 7 ye bölünür.
Asal sayı : kendisine ve 1 e bölünebilen sayıdır
Yani 2,3,5,7 e bölünmeyecek.Şu anda düşündüm de istediğiniz sayıyı girin 2,3,5,7 sayılarına bölünmüyorsa asal sayıdır.
19,27 diyelim 19 , 27 => 2,3,5,7 ye bölünmez...Demek ki asal sayı...
Şimdi okulum var size php sini yazıcam.abc.def gibi bir asal sayı söylerseniz göreceksiniz ki onlarda 2,3,5,7 ye bölünmez.
-
Hadi alın arkadaşlar sizin için asal say hesaplayıcı yaptım;
http://tarcan.tur0.org/say.php
fazla bokunu çıkartmayın diye 4 basamağın üstüne saydırtmıyorum . İlla 4 basamağın üstüne çıkıcam derseniz localhsotta yapın ;
<?php
$say = '10' ; // kaçtan başlasın ?
$kadar = '1000' ; // kaça kadar saysın ?
while($say<=$kadar+1){
// burada problem şu ; 10 içindeki 2,3,5,7 sayıları bizim programımızda bölünüyor bizde elle ekliyoruz.
echo '1 sayısı asaldır<br>2 sayısı asaldır<br>3 sayısı asaldır<br>5 sayısı asaldır<br>7 sayısı asaldır<br>';
if (($say % 2) != 0 and ($say % 3) != 0 and ($say % 5) != 0 and ($say % 7) != 0 ){
echo $say . ' sayısı asaldır<br>';
}
$say++;
}
?>---
Ben denedim hepsi asal sayı.Tek problemi 1 ile 10 arasındaki asal sayıları göstermiyor.Çünkü hepsini onlara bölüyoruz.
Buda demek oluyor ki 10 dan sonrası doğru.Bir hatta varsa mantıkta söyleyin
& kuytul;
hocam 2,3,5,7 ye göre yaptım gördüğüm kadarıyla oldu.
---
Diğer arkadaşlar ;
Asal sayı hespalatırken 2,3,5,7 ye bölünüyor mu diye bakarsa program olur....
-
zumsuk bunu yazdı:
-----------------------------
-----------------------------zumsuk ustadim, 1-2 sayfa onceden itirabaren okursan hepsini ve konuyu, olayi cozdugumuzu anlarsin. Arkadasin verdigi kodu ben alip derledikten sonra ciktisini verdim ekran goruntusu olarak 5 in kati bazi sayilaraida output olarak verdi icin, asal olmayanlarida bastirdigini gostermek icin. Oda farkina varinca zaten duzelttik bu hatayi :) Arkadasin kendiside ve bende asal sayi konularini iyi bildigimizden suphe yok. Fakat malesef ki seni duzeltmek zorundayim;
--------------------------------------------------------------------------------
Matematiksel olarak bir sayının asa sayı olması için ;
2,3,4,5,6,7,8,9,10 a bölünmemesi lazım diye 1 den 10 a kadar listeletsek
4 ü attık 2 var, 6 yı attık 2 ve 3 var, 8 i attık 4, 2 var, 9 u attık 3 var, 10 u attık 5, 2 var
geriye kalan
2,3,5,7 ye bölünüyor mu ;
11,13,17 => 2,3,5,7 ye bölünmez.Demek ki asal sayı.
isterse 67 olsunn.67 sayısı 2,3,5,7 ye bölünmez o halde asal sayıdır.
Kasmaya gerek yok bir sayı 2,3,5,7 ye bölünmüyorsa asal sayııdır abi.Mantıken bu
--------------------------------------------------------------------------------
malesef ki bildigin yanlis, keske boyle olsaydi da cok buyuk asal sayilari kolayca anlayip hesaplayabilseydik, o zaman RSA dedigimiz asal sayilara dayanan kriptoloji teknigimiz daha bir guvensiz olurdu.
Bunu senin yerine ben soyliyeyim, bir sayinin asal olmasi 1 ve kendisi haricinde hic bir boleninin olmamasi demektir. 13 * 11 = 141 ; 141 asal sayi degildir cunku kendisi 2 asal sayinin carpimidir yani , 11, 13 bu sayinin bolenleridir. senin dedigin 2,3,5,7 teorisinin eksik oldugunu anlamissindir umarim.
-
Hadi alın arkadaşlar sizin için asal say hesaplayıcı yaptım;
http://tarcan.tur0.org/say.php
fazla bokunu çıkartmayın diye 4 basamağın üstüne saydırtmıyorum . İlla 4 basamağın üstüne çıkıcam derseniz localhsotta yapın ;
<?php
$say = '10' ; // kaçtan başlasın ?
$kadar = '1000' ; // kaça kadar saysın ?
while($say<=$kadar+1){
// burada problem şu ; 10 içindeki 2,3,5,7 sayıları bizim programımızda bölünüyor bizde elle ekliyoruz.
echo '1 sayısı asaldır<br>2 sayısı asaldır<br>3 sayısı asaldır<br>5 sayısı asaldır<br>7 sayısı asaldır<br>';
if (($say % 2) != 0 and ($say % 3) != 0 and ($say % 5) != 0 and ($say % 7) != 0 ){
echo $say . ' sayısı asaldır<br>';
}
$say++;
}
?>---
Ben denedim hepsi asal sayı.Tek problemi 1 ile 10 arasındaki asal sayıları göstermiyor.Çünkü hepsini onlara bölüyoruz.
Buda demek oluyor ki 10 dan sonrası doğru.Bir hatta varsa mantıkta söyleyin
& kuytul;
hocam 2,3,5,7 ye göre yaptım gördüğüm kadarıyla oldu.
---
Diğer arkadaşlar ;
Asal sayı hespalatırken 2,3,5,7 ye bölünüyor mu diye bakarsa program olur....
--
abi yanlis anlama ama iyi guldurdun :)