Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.13 KB | None | 0 0
  1. //Проверка на простоту
  2. //возвращает ноль если число простое, или найменьший делитель, если число состовное
  3. int is_prime(int number)
  4. {
  5.     int i;
  6.     printf("%d is prime checking\n", number);
  7.     for(i= 2;i<sqrt(number)+1;i++)
  8.     {
  9.         if (number%i == 0)
  10.             return i;
  11.     }
  12.     return 0;
  13. }
  14.  
  15. int decomp(int number, int** list)
  16. {
  17.     int i,size = 256, count = 0, *tmp_list,tmp;
  18.     puts("decompilation've started");
  19.     *list = malloc(size * sizeof(int*));
  20.     for(tmp=is_prime(number); tmp!=0; count++, tmp = is_prime(number))
  21.     {
  22.         *list[count] = tmp;
  23.         number /= *list[count];
  24.  
  25.     }
  26.     if (!tmp)
  27.     return count;
  28. }
  29. /*
  30. задал вот такой number = 2*3*5*7*11
  31. и в теории функция должна создать массив 2 3 5 7 11
  32.  
  33. в дебаге вижу такую фигню
  34. size 256
  35. count 1
  36. tmp 3
  37. number 1155
  38. list  0хьавлпоывтпоытвап
  39.  *list 0xjfnjhgjdghjd
  40.    **list 2
  41.  
  42.  и ошибка в *list[count] = tmp;
  43. Exception has occurred.
  44. Segmentation fault*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement