【发布时间】:2016-07-07 01:41:42
【问题描述】:
所以我以为我解决了这个问题,但过了一会儿我意识到我的所有代码都是确保所有输入都是素数,并且前 3 个输入小于第 4 个。反之亦然,如果它是从大到小的素数序列,那么我如何正确确保我的所有 4 个素数都是连续的?素数越高,每个素数之间的差距就越大。所以我在这里很困惑。还有 flag++ 可以检查所有 4 个输入是否都是素数。如果所有 4 个都是素数,那么我的函数返回 TRUE。
if(input2 > input1) //This is to know if the sequence is going up or going down, in this case, it's up
while (x <= input4) { //Creates all prime numbers while X is lesser than or equal to input4
while (isprime(x) == 0)
x++;
if (isprime(x)) { //If x is a prime number, we check if it's one of the inputs, if all 4 inputs are consecutive prime integers, then flag will be 4 after the loop, and we'll know that it's a prime sequence
if (x == input1)
flag++;
if (x == input2)
flag++;
if (x == input3)
flag++;
if (x == input4)
flag++;
}
x++;
}
【问题讨论】:
-
恕我直言,一个简单的解决方案是使用 Eratosthene 的筛子来查找所有小于用户给出的最高值的素数。这样一来,它们是否是连续的就很明显了。
-
在给定范围内实施 Erastothenes Sieve,例如。 200-250。这将比 isprime 在顺序整数上更有效。
-
@SergeBallesta 谢谢,但是看看网上的 C 实现,我必须使用数组,好吧,我不允许这样做。
-
不允许使用数组?这是荒谬的。顺序,你的意思是
(x1 < x2) && (x2 < x3) && (x3 < x4)?在这种情况下,只需检查这个不等式是否为真,然后检查它们是否都是素数。或者你的意思是它们之间也不应该有其他素数?如果他们是平等的呢? -
@Groo 好吧,这是一个限制。这显然是为了帮助我们“跳出框框思考”。不,不是那样,只是中间没有其他素数。例如,给定 1、2、3、5 作为输入。程序将打印“显示的素数系列”“下一个数字是 7”,如果输入是 1、3、5、11,程序应该说“没有关系”,因为找不到序列。我的程序的目标是,给定用户的 4 个整数输入,确定 4 个数字显示的序列。比如+n -m、*n +m等