#include<stdio.h>
int isPrime(int x, int knownPrimes[], int numberOfKnownPrimes);
int main(void){
int const number = 10;
int prime[10] = {2};
int count = 1;
int i = 3;
while(count < number){
if (isPrime(i, prime, count)){
prime[count++] = i;
}
i++;
}
for(i=0; i<number; i++){
printf("%d", prime[i]);
if((i+1)%5==0) printf("\n");
else printf("\n");
}
return 0;
}
int isPrime(int x, int knownPrimes[], int numberOfKnownPrimes){
int ret = 1;
int i;
for(i=0; i<numberOfKnownPrimes; i++){
if(x % knownPrimes[i] == 0){
ret = 0;
break;
}
}
return ret;
}
思想:
首先,在主函数中定义了一个常量number为10,
表示要找的素数的数量。同时定义了一个名为prime的数组,
用来存放找到的素数。count表示已经找到的素数的数量,
初始值为1,表示已知的素数数量为1。i表示当前要判断是否为素数的数,初始值为3。
然后,进入一个循环,当找到的素数数量小于number时,执行循环体。
循环体中调用了一个名为isPrime的函数,判断当前的i是否为素数。
如果是素数,将其添加到prime数组中,并将count加1;如果不是素数,
则继续判断下一个数。每次循环结束,i加1。
最后,使用循环打印出prime数组中的素数。每打印5个素数就换行。
isPrime函数的功能是判断一个数x是否为素数。它接受三个参数,
x表示要判断的数,knownPrimes表示已知的素数数组,
numberOfKnownPrimes表示已知的素数的数量。
函数中使用了一个循环,遍历knownPrimes数组中的素数,
判断x是否能够被其中的素数整除。如果能整除,则表示x不是素数,
将ret置为0并跳出循环。如果不能整除,继续判断下一个素数。
最后,ret的值表示x是否为素数,返回给调用者