埃氏筛法(埃拉托色尼)~找素数~

素数也叫质数,只能被1和本身整除。

首先这有一个神奇的规律:一个素数的各个倍数,是一个差为此素数本身的等差数列。

因为任何数字都能被1整除,所以我们应从2开始,将范围内每个素数的各个倍数作为非素数(其实就是合数,除了1与其本身以外还可以被别的数整除),然后除掉所有的合数,留下的就是范围内的素数。

举个栗子:假设要找n内的全部素数,应找出√n以内的素数。先用2去筛(留着2,但素把2的倍数除掉(必为合数)),然后下一个素数:3,5,7……

程序实现:

QUST大一上期末2019A程序题3:

int sushu(int n){
	int i;
	int k=sqrt(n);
	for(i=2;i<=k;i++){
		if(n%i==0){
			break;
		}
	}
	if(i>=k+1){
		return 1;
	}else{
		return 0;
	}
}

或者

int sushu(int n){
	int i;
	int k=sqrt(n);
	for(i=2;i<=k;i++){
		if(n%i==0){
			return 0;
		}
	}
    return 1;

}

QUST大一上期末2021B应用题2:

#include
#include
void sushu(int a,int b){
	int n,k,i,m;
	m=0;
	for(n=a;n<=b;n++){
		k=sqrt(n);
		for(i=2;i<=k;i++){
			if(n%i==0){
				break;
			}
		}
		if(i>=k+1){
			printf("%d ",n);
		}
	}
}

int main(){
	int a,b;
	scanf("%d%d",&a,&b);
	sushu(a,b);
	return 0;
}

你可能感兴趣的:(算法)