Google2012.9.24校园招聘会笔试题.pdfVIP

  • 2
  • 0
  • 约5.72千字
  • 约 12页
  • 2021-11-04 发布于湖北
  • 举报
代码: [cpp] view plaincopyprint? 1. // 转载请标明出处,原文地址: /hackbuteer1/article/details/8017703 2. bool IsPrime( int n) 3. { 4. int i; 5. if(n 2) 6. return false; 7. else if(2 == n) 8. return true; 9. if((n1) == 0) //n%2 == 0 10. return false; 11. for(i = 3 ; i*i = n ; i += 2) // 只考虑奇数 12. { 13. if(n % i == 0) 14. return false; 15. } 16. return true; 17. } 18. 19. /* 20. 考虑到所有大于 4 的质数,被 6 除的余数只能是 1 或者 5 21. 比如接下来的 5,7,11,13,17,19 都满足 22. 23. 所以,我们可以特殊化先判断 2 和 3 24. 但后面的问题就出现了,因为并非简单的递增,从 5 开始是 +2,+4,+2,+4, 这样递增的 25. 这样的话,循环应该怎么写呢? 26. 27. 首先,我们定义一个步长变量 step ,循环大概是这样 for (i = 5; i = s; i += step) 28. 那么,就是每次循环,让 step 从 2 变 4,或者从 4 变 2 29. 于是,可以这么写: 30. */ 31. bool IsPrime2( int n) 32. { 33. int i, step = 4; 34. if(n 2) 35. return false; 36. else if(2 == n || 3 == n) 37. return true; 38. if((n1) == 0) //n%2 == 0 39. return false; 40. if(n%3 == 0) //n%3 == 0 41. return false; 42. for(i = 5 ; i*i = n ; i += step) 43. { 44. if(n % i == 0) 45. return false; 46. step ^= 6; 47. } 48. return true; 49. } 50. 51. void print_prime( int n) 52. { 53. int i , num = 0; 54. 55. for(i = 0 ; ; ++i) 56. { 57. if(IsPrime2(i)) 58. { 59.

文档评论(0)

1亿VIP精品文档

相关文档