在接触c语言初步,我们已经学了用循环方法判断一个数是否为素数,之后可以用循环嵌套求出某范围内的素数
学习函数之后,可以定义一个isPrime函数判断素数,非常方便
学习数组之后,我们可以定义一个元素除了0位和1位(0和1不是素数)全为1的数组,之后从2开始,将每个素数的整数倍所在位置的元素都赋值为0.最后输出值为1的定位。
代码如下
#includeint main() //思路:将数组中从2开始的素数的倍数均赋值为0,剩下为1的就是素数 { const int number = 20; //定义数组中元素的个数 int isPrime[number]; //定义数组 isPrime[0]=isPrime[1]=0; for (int i = 2; i < number; i++) //给每个元素赋值0 { isPrime[i] = 1; } int x=2; int cnt; for (x; x < number; x++) //从2开始遍历每一个素数,将他们的倍数在数组中对应的元素变成0 { if (isPrime[x] == 1) { //如果x在数组中对应的已经是0,就没必要对x再进行倍数化了 for (cnt = 2; x * cnt < number; cnt++) { isPrime[cnt * x] = 0; } } } int a; for (a = 2; a < number; a++) { if (isPrime[a] == 1) { printf("%dt", a); } } return 0; }



