我想解决 问题五 的欧拉工程,这是。
2520是最小的数字,可以被1到10的每一个数字所除,没有任何余数。被1到20的所有数字均匀除以的最小正数是多少?
我的程序符合要求,但当我执行它时,它显示以下信息。
Segmentation fault: 11
void integerDivision(int num)
{
int i = 0;
int smallestNumber = 0;
int remainder = 0;
int numbers[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 15, 16, 17, 18, 19, 20};
for(int j = i; j < 20; j++)
{
remainder = num % numbers[j];
if (remainder == 0)
{
continue;
}
else
{
i = 0;
integerDivision(num + 1);
}
}
smallestNumber = num / numbers[i];
cout << smallestNumber << endl;
}
int main(void)
{
integerDivision(1);
return 0;
}
你可以试着调试一下你的代码,把数值的数量从20减少到5。
int numbers[] = {1, 2, 3, 4, 5}; for(int j = i; j < 5; j++)
你的代码有几个问题。
integerDivision(num + 1)
满打满算 num
它将会产生一个指数级的增长,你的程序将会超时。为了解决这个问题,你可以添加 return;
之后 integerDivision(num + 1)