Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int main(void) {
- int n, prev_size = 4;
- int added[4] = {1,3,7,9};
- int value, root = 4;
- int *prev = malloc(prev_size * sizeof(int));
- prev[0] = 2; prev[1] = 3; prev[2] = 5; prev[3] = 7;
- int *arr = malloc(4 * prev_size * sizeof(int));
- scanf("%d", &n);
- int pos = 0, size = 1;
- int *new_arr = malloc(size*sizeof(int));
- if (n==1){
- for (int i=0;i<4;++i){
- printf("%d ", prev[i]);
- }
- }
- else {
- for (int i = 0; i < n - 1; ++i) {
- pos = 0;
- size = 1;
- new_arr = realloc(new_arr, size * sizeof(int));
- printf("%lu\n", 4 * prev_size * sizeof(int));
- arr = realloc(arr, 4 * prev_size * sizeof(int));
- printf("prev_size = %d\n", prev_size);
- for (int k=0; k<prev_size; ++k){
- printf("%d ", prev[k]);
- }
- printf("\n");
- for (int j = 0; j < prev_size; ++j) {
- for (int k = 0; k < 4; ++k) {
- value = prev[j] * 10 + added[k];
- printf("%d - %d; ", value, prev[j]);
- arr[j * 4 + k] = value;
- }
- }
- printf("\n");
- for (int j = 0; j < 4 * prev_size; ++j) {
- while (root * root <= arr[j]) {
- ++root;
- }
- int res = 1;
- for (int k = 3; k < root; ++k) { // n != 1
- if (!(arr[j] % k)) {
- res = 0;
- break;
- }
- }
- if (res) {
- if (pos == size) {
- size *= 2;
- new_arr = realloc(new_arr, size * sizeof(int));
- }
- new_arr[pos] = arr[j];
- ++pos;
- }
- }
- prev_size = pos;
- free(prev);
- prev = malloc(prev_size);
- for (int j = 0; j < pos; ++j) {
- prev[j] = new_arr[j];
- }
- printf("new_array:\n");
- for (int k = 0; k < pos; ++k) {
- printf("%d ", new_arr[k]);
- }
- printf("\nprev_copy:\n");
- for (int k = 0; k < pos; ++k) {
- printf("%d ", prev[k]);
- }
- printf("\n");
- }
- for (int i = 0; i < pos; ++i) {
- printf("%d ", new_arr[i]);
- }
- }
- free(prev);
- free(arr);
- free(new_arr);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement