Forumları Okundu Yap |
![]() |
#1 |
Girilen sayının asal olup olmadığını bulan bir program yapmak istiyorum(c de)
Ancak bazı sorularım var: 1-)a=sayi%i burada a ya sayi nin i ye bölümünden kalani mi atıyorum? (Yani doğrumu yapıyorum) 2-)for ile başlatılan döngü döngü sürerken nasıl sonlandırılır. Örneğin döngü içinde eğer a değişkeninde 0 değeri oluşursa; if(a=0) komutuyla döngüyü sonlandırmak istersem bunu nasıl yaparım? 3-)Bu programda şu mantığım doğru mu? b adli bir integer degisken tanımlıyorum sıfır degeri veriyorum. Sayiyi giriyorum(sayi degiskenine kayıtlı değeri) for(i=1;i<sayi;i++) ile döngü başlatıyorum. Döngü içinde a=sayi%i yapıp a ya kalanı atıyorum. if(a=0) geçerli olursa döngü bitiyor b=1 oluyor ve program sayi asal degil diyor. Döngünün dışında if(b!=1) satırı var.Doğru olursa program sayi asal dior. Sorularıma cevap verirseniz sevinirm(Her zaman söyleriz.Ama cidden sevinirm.Ah siz cevaplamazsanız kim cevaplar başka.Teşekkür ederim.) |
|
![]() |
![]() |
#2 |
asal sayıyı bulmak icin asal sayının en temel ozelligini kullanmak gerek. bir sayı kendisi ve 1 den baska hic bir sayıya bolunmuyorsa(ve de 1 den buyukse) asaldır. bunu asagıdaki ko da gosterdim. kolaylık olsun diye baska bir fonksiyon tanımladım, sorun olursa fonksiyonun ,icindekini maine kopyalayın uygun bir sekilde.
/******************KOD**************** #include<math.h> #include<stdio.h> int isprime(int p) { int i; for(i = 2; i <= sqrt(p);i++) if(p % i == 0) return 0; return 1; } int main() { int denek; printf("sayıyı gir:\n"); scanf("%d", &denek); if(denek<=1) printf("asal degil\n"); else { if(isprime(denek)) printf("asal\n"); else printf("asal degil\n"); } return 0; } /*************KOD***************** algoritman mantıklı, gerci efficiency den kaybediyor, cunku 2 den o sayının kokune kadar araman yeterli (sqrt() fonksiyonu). kontrol icinde a=0 degil a==0 ı kullanman gerek. kolay gelsin. |
|
![]() |
![]() |
#3 |
buna ek olarak hoppalanın da dediği gibi kendisine ve 1 e bölünen sayılar asaldır. dolayısıyla
bir for içinde sayıyı kendisine kadar böldürürsün mesela sayaç=0; for(i=2;i=birilen_sayı;i++) sonuç=girilen_sayı/i; if(sonuç!=0 || sonuç!=1) { sayaç=sayaç+1; } if (sayaç>1) put("sayı asal değildir"); else put("sayı asaldır") biraz düzeltme ile bu psdecode da çalışır... |
|
![]() |
![]() |
#4 |
hoppala;
fonksiyon içindeki return o; ve return 1; komutları ne işe yarıyo? aralarındaki fark ne? |
|
![]() |
![]() |
#5 | |
Alıntı:
bildigin gibi fonksiyonda asal olup olmadıgı kontrol ediliyor. if de de sunu diyorum. eger asal sa (p%i==0) fonskiyon 1 donsun (return 1). yanlışsa da 0 donsun (return 0). main fonksiyonun icinde de bunu kullanıyoruz. 1 se (dogru yani) asaldır bas. 0 sa (yanlış) asal degildir bas. mesela printf("%d", isprime(11)); ----> 1 doner. printf("%d", isprime(10)); ----> 0 doner. |
||
![]() |
![]() |
#6 |
Peki en buyuk asal sayiyi bulabilecek ve buldugunda durabilecek bir program yazabilecek var mi?
|
|
![]() |
![]() |
#7 |
en buyuk asal sayı diye bir şey yoktur.
|
|
![]() |
![]() |
#8 |
vardir...........
|
|
![]() |
![]() |
#9 |
asal sayılar sonsuz tane oldugu icin en buyuk asal sayı diye bir şey yoktur. ispatını da yaparım istersen. senin dedigin en buyuk sayıyı bul demek kadar komik.
|
|
![]() |
![]() |
#10 |
Ya nasil soylesem bilmiyorum ama.. en buyuk asal sayi vardir.. bundan yuzyillar once sonsuz dedigin zaman adamlarin akli dururmus ..soyleyeni oldururlermis.. en buyuk asal sayi var..
|
|
![]() |
![]() |
#11 |
sen bana en buyuk asal sayıyı bul ben sana ondan buyugunu buliyim.
|
|
![]() |
![]() |
#12 |
ben cahillen sohbeti kestim..
|
|
![]() |
![]() |
#13 |
![]() bilg. müh. demişsin. discrete mathematics dersinde bu ispatı yapmış olman gerekirdi. yapmadın mı yoksa. |
|
![]() |
![]() |
#14 |
Hatirlamiyom. Boyle bir ispat ama. tubitak ta veya burda tubitak gibi bir kac kurum var onlarin birinde gordum sanki .. uzun zaman oldu .. ama boyle bir seyin arandigini cok iyi hatirliyorum.. bir turlu firsatim olmadi gerci programini yazacak..
ama eminim ki boyle bir sayi bur da bir suru bilim adamin ca araniyo.. inan ki bol keseden atmiyom yani.. hele boyle bir forum de insanlar ogrenmeye degil de yazanlara laf sokmaya calisirkern.. neysem bir gun bulursam televizyonda gorursun artik sayinin ne oldugunu .. |
|
![]() |
![]() |
#15 |
bak şey desen eyvallah: "şu ana kadar bulunabilen en buyuk asal sayı" şudur desen tamam. şu ana kadar bulunan en buyuk asal sayı demek en buyuk asal sayı demek degildir. bulunan sayı da mersenne sayılarındandır. bunun sebebi mersenne sayılarının ki bunlar da asal sayıdır, daha kolay bulunabilmesidir.
bu arada eger bana ogretecegin bişey varsa almaya hazırım derdim yok kimseyle. |
|
![]() |
![]() |
#16 |
peki bulmaya calissan en buyuk asal sayiyi sence c de veya c++ yapabilirmisin programini?
yai diyelim ki 1 den basladin ve her sayiyi bir artirip asal olup olmadigini kontrol ediyosun.. boyle bir program yazabilirmisin yazamassin iste.. nerde yazarsin bunu? |
|
![]() |
![]() |
#17 |
c veya c++ da yazarım. sonsuz donguye sokup yukardaki isprime fonksiyonumu kullanırım, yuzyıllar sonra baya bir buyuk asal sayıya ulaşırım ama verimli bir yol olmaz artı omrum yetmez
![]() ayrıca yukardaki yok tabiiki verimli degil buyuk sayılar icin. zaten adamlar bilinen en buyuk asal sayıyı elde etmek icin 1000 lerce bilgisayarla paralel caısıyolar. |
|
![]() |
![]() |
#18 |
neysem ....bosver bu asal sayi olayini..
|
|
![]() |
![]() |
#19 |
Bunun ewindeki bilgisayarlamı yapıcan ? çok film izlemeyin
|
|
![]() |
![]() |
#20 |
arkadaşlar, yapmayın ya sonsuz sayı içimde sonsuz asal sayı vardır
bunu beş yaşındaki çoçuk bile mantığı ile çözer.... |
|
![]() |
Cevapla |
Konu Araçları | |
|
|