fork download
  1. /******************************************************************************
  2.  
  3.   Online C Compiler.
  4.   Code, Compile, Run and Debug C program online.
  5. Write your code in this editor and press "Run" button to compile and execute it.
  6.  
  7. *******************************************************************************/
  8.  
  9. #include <stdio.h>
  10. #include "stdint.h"
  11.  
  12. uint32_t int_sqrt(uint32_t x) {
  13. if (x < 2) return x;
  14.  
  15. uint32_t left = 0, right = x / 2 + 1;
  16. uint32_t mid, square;
  17.  
  18. while (left <= right) {
  19. mid = (left + right) / 2;
  20. square = mid * mid;
  21.  
  22. if (square == x) {
  23. return mid;
  24. } else if (square < x) {
  25. left = mid + 1;
  26. } else {
  27. right = mid - 1;
  28. }
  29. }
  30.  
  31. return right;
  32. }
  33.  
  34. uint32_t int_sqrt2(uint32_t x) {
  35. if (x < 2) return x;
  36.  
  37. uint32_t res = x;
  38. uint32_t temp;
  39.  
  40. // Метод Ньютона
  41. while (1) {
  42. temp = (res + x / res) / 2;
  43. if (temp >= res) {
  44. break;
  45. }
  46. res = temp;
  47. }
  48.  
  49. return res;
  50. }
  51.  
  52. int main()
  53. {
  54.  
  55. uint16_t i;
  56. uint32_t sqrt, res;
  57. for(i=0;i<1000;i++){
  58. sqrt = i;
  59. sqrt = sqrt * sqrt;
  60. res = int_sqrt2(sqrt);
  61. if(i != res){
  62.  
  63. printf("error %d res %d\n\r",i,res);
  64. break;
  65. }
  66. }
  67.  
  68.  
  69.  
  70.  
  71. printf("Hello World");
  72.  
  73. return 0;
  74. }
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
Hello World