burdan 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)
}