c de bir sayının asal olup olmadığını bulmak istiyorum.
bana açıklamalı olarak kodlarını yazarsanız çok sevinirim.
cevaplar için şimdiden teşekkürler.
c de bir sayının asal olup olmadığını bulma
Bir sayının kendisi ve 1'den baska boleni yoksa o sayı asal sayıdır.Bu problem basit bir dongu kurularak cozulebilir.ornegin dongu sayacının 2'den basladıgı bir for dongusu ele alacak olursak,kontrol ettigimiz sayının yarısına kadar donguyu çalıştırmamız yeterlidir.Tabi bu çalışmada bir de bolunebilme kontrolu yaparak sorunun cozumune ulasmıs oluruz.Algoritmanın koda donusmus hali asagidaki gibidir.
#include <stdio.h>
main() {
int sayi=5,flag=0;
for(int i=2;i<=sayi/2;i++) {
if(sayi%i==0) {
flag=1;
break;
}}
if(flag==0)
printf("Sayi Asaldir\n");
else
printf("Sayi Asal Degildir\n");
return 0;
}
Bir sayının asal olup olmadıgına euclid algoritmasına dayanarakda karar verilebilir.Başarılar
c veya c++ olursa daha iyi olur yinede teşekkürler.
teşekkürler muh34 kodda i değeri neden sayi/2 ye kadar geldi acaba.
#include <iostream>
using std::cout;
main() {
int sayi=5;
bool flag=0;
for(int i=2;i<=sayi/2;i++) {
if(sayi%i==0) {
flag=1;
break;
}}
if(flag==0)
cout << "Sayi Asaldir\n";
else
cout << "Sayi Asal Degildir\n";
return 0;
}
Yukarıdaki C dilinde yazılmıs kodun C++ halinide yayınlıyorum.Başarılar
Cunku bir sayi kendisinden kucuk en buyuk katına bolunebiliyorsa,kontrolun daha fazla yapılmasına gerek yoktur.Bu da tamsayılar icin maksimum yarısıdır,Pek tabiki yukarıdaki dongu kosulu -> for(i=2;i<sayi;i++) olarakda degistirilebilirdi,bu sekilde de dogru sonuc elbetteki olacaktır.Bunun nedeni sadece CPU kullanımından feragat etmektir.Başarılar
problemi çözdüm.teşekkürler muh34 Allah razı olsun.sanada teşekkürler censez41.
Ne demek sizdende Allah razı olsun,herhangi bir problemde yazdıgınız zaman yardımcı olmaya calısırım.Başarılar
for(i=2;i<=sayi/2;i++) derken i<=sayi/2 mi olacak yoksa i<sayi/2 mi olacak.
yani küçük mü yoksa küçük eşittir mi olacak.