C 如何用前10个素数填充数组?

C 如何用前10个素数填充数组?,c,arrays,for-loop,C,Arrays,For Loop,这可能是一个非常简单的问题,但由于某种原因,我就是想不出正确的解决办法 我们有一个函数intisprime(intn),如果n是素数,它返回一个2,如果n不是正的,它返回一个-1,如果n不是素数,它返回一个0。(我们不需要为这个函数编写任何代码,我们只是假设代码已经编写好了,所以我们所要做的就是调用这个函数)。使用此函数,我们必须编写一个代码片段,用前十个素数填充大小为10的整数数组。注:将1视为非素数 我尝试了以下解决方案,但我认为它不正确: 注意:我们只需要写一段代码 int a[10];

这可能是一个非常简单的问题,但由于某种原因,我就是想不出正确的解决办法

我们有一个函数intisprime(intn),如果n是素数,它返回一个2,如果n不是正的,它返回一个-1,如果n不是素数,它返回一个0。(我们不需要为这个函数编写任何代码,我们只是假设代码已经编写好了,所以我们所要做的就是调用这个函数)。使用此函数,我们必须编写一个代码片段,用前十个素数填充大小为10的整数数组。注:将1视为非素数

我尝试了以下解决方案,但我认为它不正确: 注意:我们只需要写一段代码

int a[10];
int n, i, result;

result = isPrime(n);

   for (i = 0; i < 10; i++) {
      if (result == 1) {
         a[i] = n;
      }
   }
inta[10];
int n,i,结果;
结果=isPrime(n);
对于(i=0;i<10;i++){
如果(结果==1){
a[i]=n;
}
}

我有一种感觉,我将不得不使用两个for循环,一个循环通过isPrime检查的数字,另一个循环通过数组中的位置,正如我上面所说的。但我不确定如果我有两个for循环会是什么样子。感谢您的帮助!提前感谢。

从零素数开始。当你没有10个时,看看下一个数字是否是素数;如果是,则将其添加到数组中的下一个点(如果是,现在您又有一个素数)


(这直接转化为代码。您需要一个循环,但需要两个不同的计数器:找到的素数的数量和下一个测试的数量)

从零素数开始。当你没有10个时,看看下一个数字是否是素数;如果是,则将其添加到数组中的下一个点(如果是,现在您又有一个素数)


(这直接转化为代码。您需要一个循环,但需要两个不同的计数器:找到的素数的数量,以及下一个要测试的数量)

尝试类似的方法。它会反复寻找下一个素数,直到你找到其中的10个。 注意:由于您没有提供
isPrime
的实现,因此未测试此代码。它只是想让你知道它应该是什么样子

int a[10];
int n, i, result;

n = 2;
for (i = 0; i < 10; i++) {
    // Keep bumping n until we find a prime.
    while (!(isPrime(n) == 2)) {
       n++;
    }

    // Record the prime we just found.
    a[i] = n;

    // Ensure that we do not just record the same prime n times.
    n++;
}
inta[10];
int n,i,结果;
n=2;
对于(i=0;i<10;i++){
//继续碰撞n直到找到素数。
而(!(iPrime(n)==2)){
n++;
}
//记录我们刚找到的质数。
a[i]=n;
//确保我们不只是记录相同的素数n次。
n++;
}

试试这样的方法。它会反复寻找下一个素数,直到你找到其中的10个。 注意:由于您没有提供
isPrime
的实现,因此未测试此代码。它只是想让你知道它应该是什么样子

int a[10];
int n, i, result;

n = 2;
for (i = 0; i < 10; i++) {
    // Keep bumping n until we find a prime.
    while (!(isPrime(n) == 2)) {
       n++;
    }

    // Record the prime we just found.
    a[i] = n;

    // Ensure that we do not just record the same prime n times.
    n++;
}
inta[10];
int n,i,结果;
n=2;
对于(i=0;i<10;i++){
//继续碰撞n直到找到素数。
而(!(iPrime(n)==2)){
n++;
}
//记录我们刚找到的质数。
a[i]=n;
//确保我们不只是记录相同的素数n次。
n++;
}

阿马登算法的实现:

int a[10];
for (int n = 1, nprimes = 0;;)
    if (isPrime(++n) == 2) {
        a[nprimes++] = n;
        if (nprimes == 10)
            break;
    }

Amaden算法的实现:

int a[10];
for (int n = 1, nprimes = 0;;)
    if (isPrime(++n) == 2) {
        a[nprimes++] = n;
        if (nprimes == 10)
            break;
    }

谢谢只是一个简单的问题,为什么它说!(isPrime(n)==2)在while循环的条件下??或者,while循环中的条件是什么?您应该同样轻松地编写
isPrime!=2
在那里。正如注释中提到的,while循环的目的是只要
n
不是素数,就保持递增
n
。对于while循环,“n++”不应该只出现在while循环的末尾吗?(在while循环的开头有一个循环,在你创建的代码片段的末尾有一个循环)@Karen,我添加了大括号来说明
while
循环在第一个语句之后停止。啊,我明白了!!:)谢谢谢谢只是一个简单的问题,为什么它说!(isPrime(n)==2)在while循环的条件下??或者,while循环中的条件是什么?您应该同样轻松地编写
isPrime!=2
在那里。正如注释中提到的,while循环的目的是只要
n
不是素数,就保持递增
n
。对于while循环,“n++”不应该只出现在while循环的末尾吗?(在while循环的开头有一个循环,在你创建的代码片段的末尾有一个循环)@Karen,我添加了大括号来说明
while
循环在第一个语句之后停止。啊,我明白了!!:)谢谢