# 也谈第1500个只有2、3、5质因子的自然数的计算

955人阅读 评论(0)

#include <cstdlib>
#include <cstdio>

class Calc235
{
unsigned *v;
unsigned minV, va, vb, vc;
int a,b,c;
const int N;
int min(unsigned a, unsigned b, unsigned c)
{
return (a<=b)?((a<=c)?a:c):((b<=c)?b:c);
}
public:
Calc235(int n)
:N(n)
{
v = new unsigned[N];
}
~Calc235()
{
delete[]v;
}
void execute()
{
v[0] = 1;
a = b = c = 0;
va = v[a] * 2;
vb = v[b] * 3;
vc = v[c] * 5;
for (int i=1; i<N; ++i)
{
v[i] = min(va, vb, vc);
if (va == v[i])
{
va = v[++a] * 2;
}
if (vb == v[i])
{
vb = v[++b] * 3;
}
if (vc == v[i])
{
vc = v[++c] * 5;
}
// printf("v[%i]=%10u v[%i]=%10u v[%i]=%10u v[%i]=%10u/n",
//  i, v[i], a, v[a]*2, b, v[b]*3, c, v[c]*5);
}
}
unsigned getResult()
{
return v[N-1];
}
};

int main(int argc, char *argv[])
{
int N = 1500;
if (argc > 1)
{
N = atoi(argv[1]);
}
Calc235 calc(N);
calc.execute();
unsigned v = calc.getResult();
printf("result = %u/n", v);
return 0;
}

计算结果：

v[1498]= 854296875 v[1363]= 859963392 v[1287]= 859963392 v[1197]= 860934420
v[1499]= 859963392 v[1364]= 860934420 v[1288]= 860934420 v[1197]= 860934420
v[1500]= 860934420 v[1365]= 864000000 v[1289]= 864000000 v[1198]= 864000000
v[1501]= 864000000 v[1366]= 874800000 v[1290]= 874800000 v[1199]= 874800000

v[1829]=3955078125 v[1674]=3981312000 v[1589]=3981312000 v[1483]=3981312000
v[1830]=3981312000 v[1675]=3985807500 v[1590]=3985807500 v[1484]=3985807500
v[1831]=3985807500 v[1676]=4000000000 v[1591]=4026531840 v[1485]=4000000000
v[1832]=4000000000 v[1677]=4026531840 v[1591]=4026531840 v[1486]=4026531840
v[1833]=4026531840 v[1678]=4031078400 v[1592]=4031078400 v[1487]=4031078400
v[1834]=4031078400 v[1679]=4050000000 v[1593]=4050000000 v[1488]=4050000000
v[1835]=4050000000 v[1680]=4076863488 v[1594]=4076863488 v[1489]=4081466880
v[1836]=4076863488 v[1681]=4081466880 v[1595]=4081466880 v[1489]=4081466880
v[1837]=4081466880 v[1682]=4096000000 v[1596]=4100625000 v[1490]=4096000000
v[1838]=4096000000 v[1683]=4100625000 v[1596]=4100625000 v[1491]=4100625000
v[1839]=4100625000 v[1684]=4132485216 v[1597]=4132485216 v[1492]=4147200000
v[1840]=4132485216 v[1685]=4147200000 v[1598]=4147200000 v[1492]=4147200000
v[1841]=4147200000 v[1686]=4194304000 v[1599]=4199040000 v[1493]=4194304000
v[1842]=4194304000 v[1687]=4199040000 v[1599]=4199040000 v[1494]=4199040000
v[1843]=4199040000 v[1688]=4218750000 v[1600]=4218750000 v[1495]=4218750000
v[1844]=4218750000 v[1689]=4246732800 v[1601]=4246732800 v[1496]=4246732800
v[1845]=4246732800 v[1690]=4251528000 v[1602]=4251528000 v[1497]=4251528000
v[1846]=4251528000 v[1691]=         0 v[1603]=4271484375 v[1498]=4271484375
v[1847]=         0 v[1692]=   4849664 v[1603]=4271484375 v[1498]=4271484375
v[1848]=   4849664 v[1693]=   9704804 v[1603]=4271484375 v[1498]=4271484375
v[1849]=   9704804 v[1694]=  25032704 v[1603]=4271484375 v[1498]=4271484375
v[1850]=  25032704 v[1695]=  58597376 v[1603]=4271484375 v[1498]=4271484375
v[1851]=  58597376 v[1696]=  79032704 v[1603]=4271484375 v[1498]=4271484375
v[1852]=  79032704 v[1697]=  99563954 v[1603]=4271484375 v[1498]=4271484375
v[1853]=  99563954 v[1698]= 128712704 v[1603]=4271484375 v[1498]=4271484375
v[1854]= 128712704 v[1699]= 133707704 v[1603]=4271484375 v[1498]=4271484375
v[1855]= 133707704 v[1700]= 184008704 v[1603]=4271484375 v[1498]=4271484375

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：1156次
• 积分：22
• 等级：
• 排名：千里之外
• 原创：1篇
• 转载：0篇
• 译文：0篇
• 评论：0条
文章分类
文章存档
阅读排行
评论排行