engin
1
https://paste.ubuntu.com/25427007/
#include<stdio.h>
#include<conio.h>
int asal_mi(int sayı){
int i;
int deger;
for (i=0 ; i<sayı ;i++){
if (sayı%i !=0 && i=sayı-1){
deger=1;
}
else if (sayı%i==0){
deger=0;
}
}
return deger;
}
int main(){
int sayı,cevap;
printf("Sorgulanacak sayıyı girin :");
scanf("%d",&sayı);
cevap=asal_mi(sayı);
if (cevap==0){
printf("Asal sayı değil");
}
else{
printf("Asal sayıdır");
}
getch();
return 0;
}
Furkan
2
Sorunun ne olduğunu tam bulamadım ama burada i=sayı-1 kullanımı hatalı == kullanmalısın
Burada ise i sayısına bölersen ilk başta 0 olduğu için division by zero hatası alırsın diye tahmin ediyorum
#include<stdio.h>
#include<conio.h>
int asal_mi(int sayi){
int i;
int deger=1;
for (i=2 ; i<sayi ;i++){
if (sayi%i !=0){
deger*=1;
}
else{
deger*=0;
}
}
return deger;
}
int main(){
int sayi,cevap;
printf("Sorgulanacak sayıyı girin :");
scanf("%d",&sayi);
cevap=asal_mi(sayi);
if (cevap==0){
printf("Asal sayı değil");
}
else{
printf("Asal sayıdır");
}
getch();
return 0;
}
Son olarak sayı sayi olarak değiştirdim ve mantık hatalarını düzelttim
Asal sayı olup olmadığını bulan fonksiyonun recursive olanı bu şekildedir;
float asal_mi(float n) {
if ((int)n == 2)
return 1;
if ((int)(1/(n - (int)n)) % (int)n == 0)
return 0;
if (n / (int)n == 1)
return asal_mi(n-1 + 1/n);
return asal_mi(n-1);
}
Örnek kullanım;
if ((int)asal_mi(n) == 1) {
// asal sayıdır
}