C programlama Arkadaşlar sorun nerede?

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;
}

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
}