数组操作(找出100以内的素数)
Array_operation(Prime_number_1&2)
方法一:
#include <stdio.h>
//find out all the prime numbers smaller than NUMBERS
//solution1: Traverse all the numbers, eliminating composite numbers one by one.
int check_is_prime(int test_number, int prime_list[], int count_of_current_numbers){
int ret=1;
int i;
for(i=0;i<count_of_current_numbers;i++){
if(test_number%prime_list[i]==0){
ret=0;
}
}
return ret;
}
int main(void){
const int NUMBERS = 100;
int prime_list[NUMBERS]={2};
int cnt=1; //cnt records the current number of prime numbers
int i;
i=3;
while(i<NUMBERS){
if(i%2!=0){
if(check_is_prime(i,prime_list,cnt)){
prime_list[cnt++]=i;
printf("successfully added %d\n",i);
printf("now cnt=%d\n",cnt);
}
}
i++;
}
//output all the prime numbers smaller than the given number
i=0;
while (i<cnt){
printf("%d\n",prime_list[i]);
i++;
}
return 0;
}
方法二:
#include <stdio.h>
//find out all the prime numbers smaller than NUMBERS
//solution2:Another method of elimination. Rule out all the multiples of the current prime numbers.
int main(void){
const int NUMBERS = 100;
int number_condition_list[NUMBERS]={1,1,0}; //1 means it has not been ruled out, 0 means it may be a prime number
for(int i=2;i<NUMBERS;i++){
if(number_condition_list[i]==0){
for(int j=2;j*i<NUMBERS;j++){
number_condition_list[j*i]=1; //Rule out all the multiples of i
}
}
}
//output all the prime numbers
for(int i=0;i<NUMBERS;i++){
if(number_condition_list[i]==0){
printf("%d\n",i);
}
}
return 0;
}