C++ 如何解决欧拉问题12?
可能重复:C++ 如何解决欧拉问题12?,c++,C++,可能重复: 我一直在研究Euler问题,但问题12出了问题。我读了一些关于大数的数学解,但仍然没有得到正确的答案。这是我的代码: #include <iostream> using namespace std; int divisorCount(const unsigned long long x) { int divizers = 0; unsigned long long i = 1; while(i <= x/i) {
我一直在研究Euler问题,但问题12出了问题。我读了一些关于大数的数学解,但仍然没有得到正确的答案。这是我的代码:
#include <iostream>
using namespace std;
int divisorCount(const unsigned long long x)
{
int divizers = 0;
unsigned long long i = 1;
while(i <= x/i)
{
if(x % i == 0)
{
divizers++;
}
i++;
}
return divizers;
}
int main()
{
bool test;
unsigned long long total = 0, spread = 1;
int divisors = 1;
while(divisors < 501)
{
total+=spread;
divisors = divisorCount(total);
spread++;
if(divisors > 501)
cout << total << " " << spread << " " << divisors << endl;
}
cout << total << " is divisible by 500+ numbers" << endl;
system("pause");
return 0;
}
#包括
使用名称空间std;
整除计数(常数无符号长x)
{
整数除数=0;
无符号长i=1;
而(i 501)
cout在sqrt(x)之上有x的除数,所以修正如下:
while(i <= x/i)
while(我想想你的if
语句:
if(x % i == 0)
{
divizers++;
}
既然i
是x
的一个因子,那么你能马上写下x
的其他因子是什么呢?如果3是24的因子,你知道24的其他因子是什么吗?这个提示中有一个隐藏的陷阱,你就知道了。任务是什么?没有链接,没有文本。:/@yi_H-是众所周知的。我知道。这是sti我们建议将外部资源联系起来。
if(x % i == 0)
{
divizers++;
}