私は C が初めてで、理解できないセグメンテーション違反が発生しています。厳密に正の数の因数の数を計算しようとする次のプログラムがあります。
#include <stdio.h>
#include <math.h>
int numberOfFactors (int number, int factor) {
if (number % factor == 0) {
number = number/factor;
return numberOfFactors(number, factor) + 1;
} else {
return 0;
}
}
int check (int x) {
if (x>0) {
return 1;
} else {
return 0;
}
}
int main(void) {
int number;
printf("Please enter a positive integer n such that n >= 1: ");
scanf("%d", &number);
if (check(number)){
int i;
for (i=1; i<=number; i++) {
int factors;
factors = numberOfFactors(number, i);
printf("%d^%d ", i, factors);
}
}
return 0;
}
セグメンテーション違反は、main() で次の行の後に整数と ENTER を入力した直後に発生します。
printf("Please enter a positive integer n such that n >= 1: ");
scanf("%d", &number);
これらの行の何がセグメンテーション違反を引き起こしていますか? また、それを回避するにはどうすればよいですか?