Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Luis O'Donnell
- COP 3502C
- Computer Science Lab Rec. Program #1
- Prime Sum*/
- #include <stdio.h>
- #include <stdlib.h>
- int main () {
- int *all_trials, num_trials, i, j, temp, highest = 0;
- //Scan in Number of trials and Create Dynamic Array of It
- scanf("%d", &num_trials);
- all_trials = malloc(sizeof(int)*num_trials);
- //Scan in all of the test cases
- for(i = 0; i < num_trials; i++){
- scanf("%d", &all_trials[i]);
- //Find highest number from all test cases
- if(all_trials[i] > highest){
- highest = all_trials[i];
- }
- }
- int prime_count = 0, add_start = 0, size = 1000, multiple;
- int *prime_arr = malloc(sizeof(int)*highest);
- int sieve_arr[1000];
- //Calculating all Prime Numbers Needed
- while(prime_count < highest){
- printf("Test");
- //Set array to 0
- for(i = 0; i < size; i++){
- sieve_arr[i] = 0;
- }
- //Sets Numbers 0 and 1 as Non-Prime
- if(add_start == 0){
- sieve_arr[0] = 2;
- sieve_arr[1] = 2;
- }
- //Establish all Previous Sieve of Eratosthenes Non-Primes
- else{
- for(i = 0; i < prime_count; i++){
- for (j = 0; j < size; j++){
- multiple = prime_arr[i] * (add_start + j);
- if( (multiple < (size + add_start)) && (multiple >= add_start) ) {
- multiple -= add_start;
- sieve_arr[multiple] = 2;
- }
- }
- }
- }
- //Using Sieve of Eratosthenes to Get Prime Numbers
- for(i = 0; i < size; i++){
- //If Prime adds to Prime Array
- if(sieve_arr[i] == 0){
- prime_arr[prime_count] = add_start + i;
- prime_count++;
- //Uses Sieve of Eratosthenes to Establish new Non-Primes
- for(j = 2; j < size; j++){
- if(j*(i + add_start) < (size + add_start)){
- temp = j*(i + add_start);
- sieve_arr[temp - add_start] = 2;
- }
- }
- }
- }
- add_start += size;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement