我想创建一个应用程序,生成满足以下方程的完整电话号码列表:
x
是一个有理数。
我们可以假设
现在,在进行一些转换后,我们得到
由于电话号码
是整数,10^9
是整数,我们知道t*666333999/s
是整数。 因此,s
是t * 666333999
的一个约数。
迄今为止,我的程序搜索所有666333999
的约数。 我认为它应该做得很好(它应该编写大多数电话号码)。 不幸的是,有时我的电话号码(它是变量tym
)是负数。
为什么呢?
以下是我的代码。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector < unsigned > divisor;
const int number = 666333999;
long double tym; // it's the phone number (9 digits)
for (int i = 2; i < number + 1; i++)
{ // I'm pushing all the divisors to vector.
if (number % i == 0)
{
divisor.push_back(i);
}
}
for(unsigned i = 1; i < divisor.size() + 1; i++)
{ // i are consecutives values of s
for(unsigned j = 1; j < (unsigned)2000000000; j++)
{ // j are consecutives values of t
tym = number / divisor[i];
tym *= j;
if(tym > 99999999 && tym < 2000000000) // I must substract 10^9
{
cout << "\t(!)\t i = " << i << " and j = " << j << ","
"div[i] = " << divisor[i] << ", telephone"
" number = " << (tym - 1000000000) << endl;
}
else if(tym >= 2000000000)
{
break;
}
}
}
}
if(tym > 99999999 && tym < 2000000000) // I must substract 10^9
行。 - enedil