【C语言】 利用筛选法求100以内的素数

算法思路:

原理很简单,就是当i是质(素)数的时候,i的所有的倍数必然是合数。如果i已经被判断不是质数了,那么再找到i后面的质数来把这个质数的倍数筛掉。

代码如下:

//C语言 筛选法求100以内的素数
//原理很简单,就是当i是质(素)数的时候,i的所有的倍数必然是合数。如果i已经被判断不是质数了,那么再找到i后面的质数来把这个质
//数的倍数筛掉。
//我们将从2开始 用2除后面的数,如果后面的数能被2整除 那么那个数一定不是素数
#define N 100 
#include "stdio.h"
int main(){
	int i,j;
	int arr[N];

	for(i = 0;i<N;i++){//对数组赋值  1-100
		arr[i]=i+1;
	}
	arr[0] = 0;//1不是素数,所以将下标0 的元素设置为0
	
	//进行素数判断:我们将从2开始 用2除后面的数,如果后面的数能被2整除 那么那个数一定不是素数,将那个数置为零
	for(i = 1;i < N-1;i++){
		for(j = i+1;j < N;j++){
			if(arr[i] != 0 && arr[j] != 0)//如果进行到3的时候2后面一定有数被置为0了,这里我们需要判断一下是不是有0
			if(arr[j] % arr[i] == 0){
				arr[j] = 0;
			}
		}
	}
	//循环输出
	for(i = 0;i<N;i++){
		if(arr[i] != 0)
			printf("%d\n",arr[i]);
		
	}

return 0;
}

结果如下:

 

猜你喜欢

转载自blog.csdn.net/u011182346/article/details/83443439