我有一个任务:我需要尽快找到几万亿个整数的整数平方根个数,不超过100,000^2 。 简单地说:
100 = 10^2 - 适合
3 = 不适合
28 = 不适合
49 = 7^2 - 适合
...
等等
作为任务的一部分,我使用 openMP 指令在处理器内核之间平均分配线程,但即使在这种情况下,程序执行速度也不太适合我。我目前使用的结构是这样的:
int y = sqrt(x);
if (y==int(y))
i++;
我尝试使用 SET 查找,知道我的数字永远不会超过100,000^2
set<int> mySet;
for (int j = 1; j <= 100001; j++)
mySet.insert(j*j);
if (mySet.find(x) != mySet.end())
i++;
但事实证明,这种方法比通常的平方根计算要慢很多倍。告诉我,是否有可能使用语言工具以某种方式加速一次迭代的执行,或者用更快的方法替换根下的计算?我会很高兴任何提示!