2016-04-02 2 views
-3

У меня есть следующий код, который вычисляет количество конечных нулей в факториале числа. Программа запускается для первого тестового теста, который равен 10, но когда один и тот же код запускается на 17, он показывает ошибку SIGFPE в C? Может ли кто-нибудь сказать, где я иду не так?Ошибка SIGFPE в C?

#include<stdio.h> 
#include<math.h> 
int main(){ 
    int n,i=1,j,sum=0,l; 
    scanf("%d",&n); 
    while((n/(5^i))>1) 
    { 
     j=(n/(5^i)); 
     i++; 
     sum=sum+j; 
    } 
    printf("%d",sum); 
    return 0; 
} 
+1

Пройдите через программу с помощью отладчика и проанализируйте свои значения, чтобы найти, где вы ошибаетесь. Кроме того, не помещайте неправильный язык –

ответ

0

Что плохого в том, что вы используете оператор ^ неправильный путь: это не оператор мощности, но оператор побитовое XOR. В C нет оператора мощности, а функция pow() - математическая библиотека.

С другой стороны ... где рассчитывается факториал?

+0

спасибо! работал как шарм. Какая глупая ошибка за то, что она указала :) –

+1

Нет необходимости вычислять факториал! Конечные нули могут быть вычислены с помощью только числа. –

Смежные вопросы