Arkadaşlar, klavyeden girilen bir sayını yarı asal sayı olup olmadığını bulan programı nasıl yapabilirim?
*Yarı asal sayılar iki asal sayının çarpımıylaortaya çıkan sayılarmış.
İç içe for döngüsü ile yapabileceğimi düşünüyorum, destek olabilecek var mı?
C programlamada ufak bir sorum var
2
●446
- 12-12-2014, 12:38:07burdan yazıyorum deneme yapmadım: sadece nested loop ile yaptım fonksyion kullanmaya izin varsa çok daha kolay olur asal sayıları bulmak:
girilen sayi a olsun:
int a = 121; int asal = 1; int yAsal = 0; int d; int i; for(i = 2; i<(a+1)/2;i++){//sayının yarısına kadar olan tam bölenlere bakıyoruz, en küçük asal: 2 if(a%i == 0){ // eğer tam bölüyorsa for(d=2; d<i;d++){ //bölenin asal olup olmadığına bakıyoruz if(i%d == 0){ asal = 0;//eğer kendisine kadar olan sayılardan herhangi birine tam bölülünüyorsa asal değil break; } } if(asal == 1){ // eğer bölen asalsa: asal = 1; int bolum= a/i; for(d=2; d<bolum;d++){ // bölüm ün asal olup olmadığını kontrol ediyoruz if(bolum%d == 0){ asal = 0; // asal değil break; } } if(asal == 1){ // bölümde asalsa sayı yarı asal yAsal = 1; } } } } if(yAsal == 1){ //sayı yarı asal) } - 17-12-2014, 20:07:51Üyeliği durdurulduTest ettim hocam bu kod işine yarar umarım.
int asalmi(int sayi)
{
int i=2,sq;
if(sayi == 2)
return 0;
sq=(int)sqrt(sayi);
if(sayi % 2 == 0)
return 2;
for(i = 3; i <= sq; i+=2)
if((sayi % i) == 0)
return i;
return 0;
}
//-----------------------------------------------------------
int bolen,bolunen,sayi = 231;
bolen = asalmi(sayi);
if(bolen != 0)
{
bolunen = sayi / bolen;
if(asalmi(bolen) == 0 && asalmi(bolunen) == 0)
printf("yari asal");
else
printf("yari asal degil");
}
else
printf("asal");