- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前我有两个功能:
它们是这样编码的(在 C++ 中):
prime_list erato_sieve(ul_it upper_limit)
{
prime_list primes;
if (upper_limit < 2)
return primes;
primes.push_back(2); // Initialize Array, and add 2 since its unique.
for (uit i = 3; i <= upper_limit; i += 2) // Only count odd numbers
{
flag is_prime = true;
for (uit j = 0; j < primes.size(); ++j)
{
if ((i % primes[j]) == 0)
{
is_prime = false;
break;
}
}
if (is_prime)
{
primes.push_back(i);
}
}
return primes;
}
和:
prime_list erato_sieve_num(ul_it MAX)
{
prime_list primes;
if (MAX == 0)
return primes;
primes.push_back(2); // Initialize Array, and add 2 since its unique.
uit i = 3;
while (primes.size() < MAX) // Only count odd numbers
{
flag is_prime = true;
for (uit j = 0; j < primes.size(); ++j)
{
if ((i % primes[j]) == 0)
{
is_prime = false;
break;
}
}
if (is_prime)
{
primes.push_back(i);
}
++i;
}
return primes;
}
其中定义了以下类型:
typedef bool flag;
typedef unsigned int uit;
typedef unsigned long int ul_it;
typedef unsigned long long int ull_it;
typedef long long int ll_it;
typedef long double ld;
typedef std::vector<ull_it> prime_list;
(如果你喜欢或不喜欢,请随意使用它们。查找替换将解决这个问题。我使用它们来使代码更符合我的想法)
我试图将它们变成一个重载的“函数”,但它们两个具有相似的参数。我担心它们之间的选择会归结为单独类型,这会导致难以调试的问题。
我的第二个选择是创建一个类,但我很尴尬地说..,我以前从未使用过类。完全没有。所以我不知道该怎么做,文档有点……稀疏?
无论如何,如果有人愿意帮助我一点点,我将不胜感激。文档总是有帮助的,也欢迎任何指点。
正如我所说,我的部分选项是一个类。我完全确定如何创建一个类来将这两者结合起来。
最佳答案
切勿为具有不同语义的函数赋予相同的名称。重载不是为此目的。这两个都采用整数,如果您可以重载它们,您将如何判断在 erato_sieve(5)
调用了哪个函数?
给他们不同的名字,例如erato_sieve_up_to
和 erato_sieve_count
。
好吧,如果你仍然想让事情变得更糟(请不要),你可以重载它们(请不要),只是让他们期待不同类型的参数。例如,将一个整数包装到一个类中并传递该类,例如
class CountWrapper {
public:
CountWrapper(int n) { n_ = n; }
operator int() { return n_; }
private:
int n_;
};
prime_list erato_sieve(const CountWrapper& MAX) {
// function's body stays the same
并称它为
my_list = erato_sieve(CountWrapper(5));
但再一次:请不要!
要对函数进行分组,您可以将它们定义为类的静态方法:
class PrimeGenerator {
public:
static prime_list EratoSieveUpTo(ul_it upper_limit) {
// body
}
static prime_list EratoSieveAmount(ul_it MAX) {
// body
}
};
然后像这样调用函数
list1 = PrimeGenerator::EratoSieveUpTo(5);
list2 = PrimeGenerator::EratoSieveAmount(10);
关于c++ - Prime Sieve 类还是重载函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20913503/
根据链接:http://en.wikipedia.org/wiki/Sieve_of_Sundaram,用于生成最多为 n 的素数列表的“sundaram 筛法”的运行时间为 O(n*log(n))。
我目前正在尝试比较两种不同素数生成算法的平均运行速度。我有这个简单的埃拉托色尼筛法实现: std::vector sieve_of_eratosthenes(int32_t n) { std:
我正在研究一个简单的埃拉托色尼筛法算法,代码如下: int main() { const int n = 1000000; int sqrn = floor(sqrt(n));
当我偶然发现一种称为欧拉筛的改进版的埃拉托色尼筛时,我正在阅读不同的筛分算法。根据Wikipedia在 Haskell 中有一个稍微不同版本的想法(称为 Turner's Sieve)的实现。 现在我
这是我编写的用于在上限可以大到 1000000000 的范围之间查找素数的代码。我使用了 Hashmap,除了 2 之外没有存储任何偶数,也没有存储 sero 和 1但当我使用输入 lb = 1 和
我最近编写了这段代码,但想知道是否有更快的方法来查找素数(不是筛子;我仍在尝试实现)。有什么建议吗?我正在使用 Python,而且对它还很陌生。 def isPrime(input): cur
我正在编写一种方法来查找不超过 n(埃拉托色尼筛法)的素数,是的,这是作业。我希望提高我编写的方法的性能。最近几天我一直在调整它,但无法遵循给出的伪代码并提高性能。 伪代码如下: 创建要处理的号码队列
目前我有两个功能: 一个需要生成素数的数量。 第二个取素数上限生成。 它们是这样编码的(在 C++ 中): prime_list erato_sieve(ul_it upper_limit) {
我一直在研究 Stroustrup 的书: http://www.amazon.com/Programming-Principles-Practice-Using-C/dp/0321543726我目前
我正在尝试使用筛子打印出一组特定的素数,但我似乎没有得到任何输出,但它编译正常。程序不会退出,除非我强制执行,所以我猜它卡在了某个地方...我该如何解决这个问题? #include #include
我编写了以下代码,使用 Sieve 的方法列出了 20 亿以内的所有质数。我使用位掩码来标记目的。虽然我能够正确地得到素数,但每次都会丢失一些开头的素数。请帮我找出程序中的错误。 #include
来自 Wikipedia: The complexity of the algorithm is O(n(logn)(loglogn)) bit operations. 你是如何做到这一点的? 复杂性
来自 Wikipedia: The complexity of the algorithm is O(n(logn)(loglogn)) bit operations. 你是如何做到这一点的? 复杂性
我正在尝试实现 Sieve of Eratosthene在 C++ 中。但是,经过多次尝试后,我总是会遇到运行时错误。我认为这与正在使用的迭代器的状态在某处损坏有关。我不能把我的手指放在上面。这是我的
最近我一直在研究使用阿特金筛 (http://en.wikipedia.org/wiki/Sieve_of_atkin) 生成其素数的 C++ 素数生成器。我的目标是能够生成任何 32 位数字。我将主
我正在尝试理解“Eratosthenes 筛法”。这是我的算法(下面的代码),以及我无法理解的功能列表(按顺序)。 为什么 i * i 比 i * 2 更有效?是的,我可以理解它会减少迭代次数,因此效
我用 Java 编写了以下“分段筛”程序。它需要筛选一系列数字,使用“筛选素数”(素数数组列表变量)划掉复合数,然后返回尚未划掉的素数。这是代码: public ArrayList sieveWork
我更多地来自 java/php 背景,我现在正在学习 C++。我试图用 C++ 重新创建埃拉托色尼筛法并打印出 5000 以下的所有素数。 我正在用 http://www.compileonline.
我想首先说明我是一个 python 新手,我很感激任何能向我清楚、完整地解释它的人。 我正在查看以下链接中的代码: http://rosettacode.org/wiki/Sieve_of_Erato
我正在研究 PrimeSieve 的数组列表实现,我已经编写了所有代码,但它似乎无法运行,所以我不确定是因为循环不好还是因为我设置了错误的扫描器。 这是代码。 import java.util.S
我是一名优秀的程序员,十分优秀!