Advertisement
Guest User

Untitled

a guest
Sep 4th, 2015
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. /* Luis O'Donnell
  2. COP 3502C
  3. Computer Science Lab Rec. Program #1
  4. Prime Sum*/
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8.  
  9. int main () {
  10.  
  11. int *all_trials, num_trials, i, j, temp, highest = 0;
  12.  
  13.  
  14. //Scan in Number of trials and Create Dynamic Array of It
  15. scanf("%d", &num_trials);
  16. all_trials = malloc(sizeof(int)*num_trials);
  17.  
  18. //Scan in all of the test cases
  19. for(i = 0; i < num_trials; i++){
  20. scanf("%d", &all_trials[i]);
  21.  
  22. //Find highest number from all test cases
  23. if(all_trials[i] > highest){
  24. highest = all_trials[i];
  25. }
  26. }
  27.  
  28.  
  29. int prime_count = 0, add_start = 0, size = 1000, multiple;
  30. int *prime_arr = malloc(sizeof(int)*highest);
  31. int sieve_arr[1000];
  32.  
  33.  
  34. //Calculating all Prime Numbers Needed
  35. while(prime_count < highest){
  36.  
  37. printf("Test");
  38.  
  39. //Set array to 0
  40. for(i = 0; i < size; i++){
  41. sieve_arr[i] = 0;
  42. }
  43.  
  44. //Sets Numbers 0 and 1 as Non-Prime
  45. if(add_start == 0){
  46. sieve_arr[0] = 2;
  47. sieve_arr[1] = 2;
  48. }
  49.  
  50. //Establish all Previous Sieve of Eratosthenes Non-Primes
  51. else{
  52. for(i = 0; i < prime_count; i++){
  53. for (j = 0; j < size; j++){
  54.  
  55. multiple = prime_arr[i] * (add_start + j);
  56. if( (multiple < (size + add_start)) && (multiple >= add_start) ) {
  57.  
  58. multiple -= add_start;
  59. sieve_arr[multiple] = 2;
  60.  
  61. }
  62. }
  63. }
  64. }
  65.  
  66. //Using Sieve of Eratosthenes to Get Prime Numbers
  67. for(i = 0; i < size; i++){
  68.  
  69. //If Prime adds to Prime Array
  70. if(sieve_arr[i] == 0){
  71. prime_arr[prime_count] = add_start + i;
  72. prime_count++;
  73.  
  74.  
  75. //Uses Sieve of Eratosthenes to Establish new Non-Primes
  76. for(j = 2; j < size; j++){
  77.  
  78. if(j*(i + add_start) < (size + add_start)){
  79.  
  80. temp = j*(i + add_start);
  81. sieve_arr[temp - add_start] = 2;
  82.  
  83. }
  84. }
  85. }
  86. }
  87. add_start += size;
  88. }
  89.  
  90.  
  91. return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement