c语言--查找某个区间的质数

#include<stdio.h>
#include<stdlib.h>

struct int_e{
	int *p;
	int length;
};

int is_prime(int *primes,int length,int num){
 	int i;
	for(i=0;i<length;i++){
  		if(*(primes+i)){
			if(num%(*(primes+i))==0){
				return 0;
			}
		}else{
			//printf("%d--%d\n",i,*(primes+i));
			break;		}
	}
	return 1;
}



struct int_e primes(int limit){
	
	int max_num = limit/2;
	int real_num = 1,i;
	
	int *primes = (int *)malloc(max_num*sizeof(int));
	if(primes != NULL){
		printf("茅坑太大了 没有");
		//此处暂时不知道如何处理
		return;
	}
	*primes = 2;
	for(i=3;i<limit;i++){
		if(is_prime(primes,max_num,i)){
			*(primes+real_num)=i;
			real_num++;
		}
	}
	
	primes = realloc(primes,real_num*sizeof(int));
	struct int_e primes_info = {p:primes,length:real_num};
	return primes_info;
}



void main(){
	
	struct int_e primes_info = primes(1000);
	if(primes_info){
		int length = primes_info.length,i;
		int *primes = primes_info.p;
	
		printf("\n========================\n");
 		for(i=0;i<length;i++){
			printf("%d -- %d\n",i,*(primes+i));
		}
	}
}

猜你喜欢

转载自www.cnblogs.com/liwuming/p/10469505.html
今日推荐