fork download
  1. #include <cstdlib>
  2. #include <iostream>
  3. using namespace std;
  4. int sqrt(int n)//對<1000000的正整數開根號到整數位
  5. {
  6. int i=0,j=0,k=0;
  7. int div[3],quot[3],ans;
  8. div[0]=n/10000;
  9. div[1]=(n%10000)/100;
  10. div[2]=n%100;
  11. while(i*i<=div[0]) i++;
  12. i--;
  13. quot[0]=i;//ans的百位數
  14. div[1]=div[1]+(div[0]-i*i)*100;
  15. i*=20;
  16. while(i*j<=div[1])
  17. {
  18. j++; i++;
  19. }
  20. i--; j--;
  21. quot[1]=j;//ans的十位數
  22. div[2]=div[2]+(div[1]-i*j)*100;
  23. i=(i+j)*10;
  24. while(i*k<=div[2])
  25. {
  26. i++; k++;
  27. }
  28. i--; k--;
  29. quot[2]=k;//ans的個位數
  30. ans=quot[0]*100+quot[1]*10+quot[2];
  31. return ans;
  32. }
  33. int check_prim(int p,int n)//n為sqrt(p),p為input
  34. {
  35. int i;
  36. while (p%2!=0)
  37. {
  38. for(i=3;i<=n;i+=2)
  39. {
  40. if(p%i==0) return 0;
  41. }
  42. return 1;
  43. }
  44. return 0;
  45. }
  46. int main()
  47. {
  48. int pri,n;
  49. cout << "請輸入一個整數<1000000,判斷是否為質數?" << endl;
  50. cin >> pri;
  51. n=sqrt(pri);
  52. cout << "開根號至整數為:" << endl << n << endl;
  53. if (check_prim(pri,n))
  54. cout << pri << "為質數" << endl;
  55. else
  56. cout << pri << "不為質數" << endl;
  57. system("pause");
  58. }
  59.  
Success #stdin #stdout 0.01s 5268KB
stdin
8100
stdout
請輸入一個整數<1000000,判斷是否為質數?
開根號至整數為:
90
8100不為質數