在最后的函数体中(用来判断一个数是否为素数的函数),
knowPrimes[i] 是如何实现作用的? 为什么不能直接用i呢?
knowPrimes[]又是什么?
以及使用函数时if ( isPrime(i, prime, count) )中的prime又代表什么?
#include<stdio.h>
int isPrime(int x, int knowPrimes[], int numberofknowPries);
//构建一个素数表
int main(void)
{
const int number = 100;
int prime[100] = {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) printf("\t");
else printf("\n");
}
return 0;
}
//函数体
int isPrime(int x, int knowPrimes[], int numberofknowPries)
{
int ret = 1;
int i;
for (i=0; i<numberofknowPries; i++){
if(x % knowPrimes[i]==0){
ret = 0;
break;
}
}
return ret;
}
使用函数时if ( isPrime(i, prime, count) )中的prime
是一个大小100的数组,最开始存储的全是2,然后不停的把素数存进去,最后这个数组里就是从2开始的前100个素数。
knowPrimes[]是形参,传递过来的实参就是prime数组,也就是knowPrimes数组存放的也是素数。
int isPrime(int x, int knowPrimes[], int numberofknowPries)这个函数的功能就是判断x是不是一个素数,后两个参数表示当前knowPrimes数组的前numberofknowPries个元素(下标从0开始)已经存放了素数了。
这个函数的流程就是:对于x,让x依次除以knowPrimes数组的前numberofknowPries个数(也就是除以已经找到的素数),只要有一个能除尽,那么x就不是素数,直接退出返回0给主函数表示x不是素数,继续判断下一个数(x+1)是不是素数,也就是主函数中的i。
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html