/mycila-math/trunk/todo/webpages/Prime Numbers, Factorization and Euler Function .html

http://mycila.googlecode.com/
HTML | 784 lines | 663 code | 94 blank | 27 comment | 0 complexity | ad0846f6a24837f3fa3540e2d8d13a1a MD5 | raw file

✨ Summary

Large files are truncated, but you can click here to view the full file

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html><head>
  3. <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  4. <title>Algorithm Tutorials</title>
  5. <script language="JavaScript" type="text/javascript" src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/tcscript.js"></script><link type="image/x-icon" rel="shortcut icon" href="http://www.topcoder.com/i/favicon.ico">
  6. <link type="text/css" rel="stylesheet" href="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/style.css">
  7. <link type="text/css" rel="stylesheet" href="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/coders.css">
  8. <link type="text/css" rel="stylesheet" href="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/tcStyles20080219.css">
  9. <link type="text/css" rel="stylesheet" href="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/jobsRemix.css">
  10. <script language="JavaScript" src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/print.js"></script>
  11. <style type="text/css">
  12. .codeBox
  13. {
  14. width: 600;
  15. padding: 10px;
  16. margin: 20px;
  17. color: #333;
  18. font-size: 11px;
  19. font-weight: normal;
  20. line-height: 14px;
  21. background-color: #EEEEEE;
  22. border: 1px solid #999;
  23. }
  24. </style>
  25. </head><body>
  26. <div class="invisible" id="onTop">
  27. <script type="text/javascript" src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/popup.js"></script>
  28. <div id="shortcutBar">
  29. <div class="icon"><a href="http://www.topcoder.com/tc"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/scHome.png" alt="" onmouseover="postPopUpText('globalPopupText','Home'); popUp(this,'globalPopup');" onmouseout="popHide()"></a></div>
  30. <div class="icon"><a href="javascript:arena();"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/scAlgo.png" alt="" onmouseover="postPopUpText('globalPopupText','Algorithm Competitions'); popUp(this,'globalPopup');" onmouseout="popHide()"></a></div>
  31. <div class="icon"><a href="http://www.topcoder.com/tc?module=ActiveContests&amp;pt=23"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/scConceptualization.png" alt="" onmouseover="postPopUpText('globalPopupText','Software Conceptualization Competitions'); popUp(this,'globalPopup');" onmouseout="popHide()"></a></div>
  32. <div class="icon"><a href="http://www.topcoder.com/tc?module=ActiveContests&amp;pt=6"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/scSpecification.png" alt="" onmouseover="postPopUpText('globalPopupText','Software Specification Competitions'); popUp(this,'globalPopup');" onmouseout="popHide()"></a></div>
  33. <div class="icon"><a href="http://www.topcoder.com/tc?module=ActiveContests&amp;pt=7"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/scArchitecture.png" alt="" onmouseover="postPopUpText('globalPopupText','Software Architecture Competitions'); popUp(this,'globalPopup');" onmouseout="popHide()"></a></div>
  34. <div class="icon"><a href="http://www.topcoder.com/tc?module=ViewActiveContests&amp;ph=112"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/scDesign.png" alt="" onmouseover="postPopUpText('globalPopupText','Component Design Competitions'); popUp(this,'globalPopup');" onmouseout="popHide()"></a></div>
  35. <div class="icon"><a href="http://www.topcoder.com/tc?module=ViewActiveContests&amp;ph=113"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/scDevelopment.png" alt="" onmouseover="postPopUpText('globalPopupText','Component Development Competitions'); popUp(this,'globalPopup');" onmouseout="popHide()"></a></div>
  36. <div class="icon"><a href="http://www.topcoder.com/tc?module=ViewAssemblyActiveContests"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/scAssembly.png" alt="" onmouseover="postPopUpText('globalPopupText','Software Assembly Competitions'); popUp(this,'globalPopup');" onmouseout="popHide()"></a></div>
  37. <div class="icon"><a href="javascript:arena();"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/scTCHS.png" alt="" onmouseover="postPopUpText('globalPopupText','High School Competitions'); popUp(this,'globalPopup');" onmouseout="popHide()"></a></div>
  38. <div class="icon"><a href="http://www.topcoder.com/longcontest/?module=ViewActiveContests"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/scMarathon.png" alt="" onmouseover="postPopUpText('globalPopupText','Marathon Matches'); popUp(this,'globalPopup');" onmouseout="popHide()"></a></div>
  39. <div class="icon"><a href="http://studio.topcoder.com/?module=ViewActiveContests"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/scStudio.png" alt="" onmouseover="postPopUpText('globalPopupText','TopCoder Studio Competitions'); popUp(this,'globalPopup');" onmouseout="popHide()"></a></div>
  40. </div>
  41. <div id="globalPopup" class="popUp"><div id="globalPopupText"></div></div>
  42. <div style="position: absolute; right: 0px; top: 31px;"><a href="http://www.topcoder.com/reg/"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/register_now.gif" alt="Register Now" style="display: block;"></a></div>
  43. <div style="margin: 0px 290px 0px 280px;" align="center">
  44. <div id="outerLogo">
  45. <div id="innerLogo">
  46. <a href="http://www.topcoder.com/"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/topcoder.gif" alt="TopCoder" style="display: block;"></a>
  47. </div>
  48. </div>
  49. </div>
  50. <div class="memberCountBox">
  51. Member Count: 206,836 -
  52. May 26, 2009
  53. &nbsp;<a class="gMetal" href="javascript:tcTime()">[Get Time]</a>
  54. </div>
  55. <div class="topBar">
  56. <div style="margin: 5px 0px 0px; float: right;">
  57. <a class="gMetal" href="http://www.topcoder.com/tc?&amp;module=Login">Login</a>
  58. </div>
  59. </div>
  60. </div>
  61. <table border="0" cellpadding="0" cellspacing="0" width="100%">
  62. <tbody><tr valign="top">
  63. <!-- Left Column Begins-->
  64. <td class="invisible" id="onLeft" width="180">
  65. <script language="JavaScript" type="text/javascript" src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/arena.js"></script>
  66. <script language="JavaScript" type="text/javascript">
  67. <!--
  68. function toggleMenu(menuTitle,menuID){
  69. var menu = document.getElementById(menuID);
  70. if(menu.style.display == 'block') menu.className = 'CLOSED';
  71. else if(menu.className == 'OPEN' && menu.style.display != 'none') menu.className = 'CLOSED';
  72. else {
  73. menu.className = 'OPEN';
  74. }
  75. if(menuTitle.blur)menuTitle.blur();
  76. if(menuTitle.className == 'exp') menuTitle.className = 'exp_ed';
  77. else menuTitle.className = 'exp';
  78. return;
  79. }
  80. function flipMenu(myMenuName){
  81. var menuName = document.getElementById(myMenuName);
  82. menuName.className = 'exp_ed';
  83. }
  84. // -->
  85. </script>
  86. <div style="padding: 0px;"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/leftnav_top.gif" alt=""></div>
  87. <div id="navbar">
  88. <ul>
  89. <li class="exp_ed"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_competitions')">Competitions</a>
  90. <ul id="m_competitions" class="OPEN">
  91. <li><a href="http://www.topcoder.com/tc">Home</a></li>
  92. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_competitor_stats')">The Tops</a>
  93. <ul id="m_competitor_stats">
  94. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_top_rated_competitors')">Top Ranked</a>
  95. <ul id="m_top_rated_competitors">
  96. <li><a href="http://www.topcoder.com/tc?module=AlgoRank">Algorithm</a></li>
  97. <li><a href="http://www.topcoder.com/tc?module=HSRank">High School</a></li>
  98. <li><a href="http://www.topcoder.com/longcontest/stats/?module=CoderRank">Marathon Match</a></li>
  99. <li><a href="http://www.topcoder.com/stat?c=top_conceptors">Conceptualization</a></li>
  100. <li><a href="http://www.topcoder.com/stat?c=top_specificators">Specification</a></li>
  101. <li><a href="http://www.topcoder.com/stat?c=top_architects">Architecture</a></li>
  102. <li><a href="http://www.topcoder.com/stat?c=top_designers">Design</a></li>
  103. <li><a href="http://www.topcoder.com/stat?c=top_developers">Development</a></li>
  104. <li><a href="http://www.topcoder.com/stat?c=top_assemblers">Assembly</a></li>
  105. <li><a href="http://www.topcoder.com/stat?c=top_testers">Application Testing</a></li>
  106. </ul></li>
  107. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_recordbook')">Record Book</a>
  108. <ul id="m_recordbook">
  109. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=statistics&amp;d2=recordbook_home">Algorithm</a></li>
  110. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=compstats&amp;d2=comp_recordbook_home">Component</a></li>
  111. <li><a href="http://www.topcoder.com/longcontest/?module=Static&amp;d1=stats&amp;d2=recordbook_home">Marathon Match</a></li>
  112. </ul></li>
  113. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_com')">Coder of the Month</a>
  114. <ul id="m_com">
  115. <li><a href="http://www.topcoder.com/tc?module=COMHistory&amp;achtid=5">Algorithm</a></li>
  116. <li><a href="http://www.topcoder.com/tc?module=COMHistory&amp;achtid=6">Design</a></li>
  117. <li><a href="http://www.topcoder.com/tc?module=COMHistory&amp;achtid=7">Development</a></li>
  118. </ul></li>
  119. </ul></li>
  120. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_algo_competitions')">Algorithm</a>
  121. <ul id="m_algo_competitions">
  122. <li><a href="javascript:arena();">Launch Arena</a></li>
  123. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_algo_stats')">Statistics</a>
  124. <ul id="m_algo_stats">
  125. <li><a href="http://www.topcoder.com/tc?module=MatchList">Match Archive</a></li>
  126. <li><a href="http://www.topcoder.com/stat?c=round_overview">Match Overviews</a></li>
  127. <li><a href="http://www.topcoder.com/tc?module=SrmDivisionWins">Match Winners</a></li>
  128. <li><a href="http://www.topcoder.com/stat?c=last_match">Match Results</a></li>
  129. <li><a href="http://www.topcoder.com/wiki/display/tc/Algorithm+Problem+Set+Analysis">Match Editorials</a></li>
  130. <li><a href="http://www.topcoder.com/tc?module=ProblemArchive">Problem Archive</a></li>
  131. <li><a href="http://www.topcoder.com/tc?module=ColorChange&amp;ratid=1">Recent Color Changes</a></li>
  132. <li><a href="http://www.topcoder.com/wiki/display/tc/Algorithm+Data+Feeds">Data Feeds</a></li>
  133. </ul></li>
  134. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_algo_support')">Support / FAQs</a>
  135. <ul id="m_algo_support">
  136. <li><a href="http://www.topcoder.com/wiki/display/tc/How+To+Compete+in+Algorithm+Competitions">How to Compete</a></li>
  137. <li><a href="http://www.topcoder.com/wiki/display/tc/Algorithm+Competition+FAQs">FAQs</a></li>
  138. <li><a href="http://www.topcoder.com/wiki/display/tc/Algorithm+Competition+Rating+System">Rating System</a></li>
  139. <li><a href="http://www.topcoder.com/wiki/display/tc/Write+Problems+for+TopCoder">Write Problems</a></li>
  140. </ul></li>
  141. </ul></li>
  142. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_conceptualization_competitions')">Software Conceptualization</a>
  143. <ul id="m_conceptualization_competitions">
  144. <li><a href="http://www.topcoder.com/wiki/display/tc/TopCoder+Conceptualization+Contests">Overview</a></li>
  145. <li><a href="http://www.topcoder.com/tc?module=ActiveContests&amp;pt=23">Active Contests</a></li>
  146. <li><a href="http://www.topcoder.com/tc?module=ContestStatus&amp;pt=23">Contest Status</a></li>
  147. <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&amp;pt=23">Review Opportunities</a></li>
  148. <li><a href="http://software.topcoder.com/review">Submit &amp; Review</a></li>
  149. <li><a href="http://www.topcoder.com/wiki/display/tc/TopCoder+UML+Tool">UML Tool</a></li>
  150. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_conceptualization_stats')">Statistics</a>
  151. <ul id="m_conceptualization_stats">
  152. <li><a href="http://www.topcoder.com/tc?module=CompList&amp;ph=134">Past Contests</a></li>
  153. </ul></li>
  154. <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&amp;pt=23">Meet the Review Board</a></li>
  155. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_conceptualization_support')">Support / FAQs</a>
  156. <ul id="m_conceptualization_support">
  157. <li><a href="http://www.topcoder.com/wiki/display/tc/Software+Conceptualization+How-To">How to Compete</a></li>
  158. <li><a href="http://www.topcoder.com/wiki/display/tc/Conceptualization+Documentation">Documentation</a></li>
  159. <li><a href="http://www.topcoder.com/wiki/display/tc/Conceptualization+Submission+Instructions">Tutorial</a></li>
  160. <li><a href="http://www.topcoder.com/wiki/display/tc/Conceptualization+Reliability+Bonus">Reliability Ratings</a></li>
  161. </ul></li>
  162. </ul></li>
  163. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_specification_competitions')">Software Specification</a>
  164. <ul id="m_specification_competitions">
  165. <li><a href="http://www.topcoder.com/wiki/display/tc/TopCoder+Specification+Contests">Overview</a></li>
  166. <li><a href="http://www.topcoder.com/tc?module=ActiveContests&amp;pt=6">Active Contests</a></li>
  167. <li><a href="http://www.topcoder.com/tc?module=ContestStatus&amp;pt=6">Contest Status</a></li>
  168. <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&amp;pt=6">Review Opportunities</a></li>
  169. <li><a href="http://software.topcoder.com/review">Submit &amp; Review</a></li>
  170. <li><a href="http://www.topcoder.com/wiki/display/tc/TopCoder+UML+Tool">UML Tool</a></li>
  171. <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&amp;pt=6">Meet the Review Board</a></li>
  172. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_specification_stats')">Statistics</a>
  173. <ul id="m_specification_stats">
  174. <li><a href="http://www.topcoder.com/tc?module=CompList&amp;ph=117">Past Contests</a></li>
  175. </ul></li>
  176. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_specification_support')">Support / FAQs</a>
  177. <ul id="m_specification_support">
  178. <li><a href="http://www.topcoder.com/wiki/display/tc/Software+Specification+How+To">How to Compete</a></li>
  179. </ul></li>
  180. </ul></li>
  181. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_architecture_competitions')">Software Architecture</a>
  182. <ul id="m_architecture_competitions">
  183. <li><a href="http://www.topcoder.com/wiki/display/tc/Architecture+Overview">Overview</a></li>
  184. <li><a href="http://www.topcoder.com/tc?module=ActiveContests&amp;pt=7">Active Contests</a></li>
  185. <li><a href="http://www.topcoder.com/tc?module=ContestStatus&amp;pt=7">Contest Status</a></li>
  186. <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&amp;pt=7">Review Opportunities</a></li>
  187. <li><a href="http://software.topcoder.com/review">Submit &amp; Review</a></li>
  188. <li><a href="http://www.topcoder.com/wiki/display/tc/TopCoder+UML+Tool">UML Tool</a></li>
  189. <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&amp;pt=7">Meet the Review Board</a></li>
  190. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_architecture_stats')">Statistics</a>
  191. <ul id="m_architecture_stats">
  192. <li><a href="http://www.topcoder.com/tc?module=CompList&amp;ph=118">Past Contests</a></li>
  193. </ul></li>
  194. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_architecture_support')">Support / FAQs</a>
  195. <ul id="m_architecture_support">
  196. <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+Architecture+Competitions">How to Compete</a></li>
  197. </ul></li>
  198. </ul></li>
  199. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_des_competitions')">Software Design</a>
  200. <ul id="m_des_competitions">
  201. <li><a href="http://www.topcoder.com/tc?module=ViewActiveContests&amp;ph=112">Active Contests</a></li>
  202. <li><a href="http://www.topcoder.com/tc?module=ContestStatus&amp;pt=1">Contest Status</a></li>
  203. <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&amp;pt=1">Review Opportunities</a></li>
  204. <li><a href="http://software.topcoder.com/review">Submit &amp; Review</a></li>
  205. <li><a href="http://www.topcoder.com/wiki/display/tc/TopCoder+UML+Tool">UML Tool</a></li>
  206. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_des_stats')">Statistics</a>
  207. <ul id="m_des_stats">
  208. <li><a href="http://www.topcoder.com/tc?module=CompList&amp;ph=112">Past Contests</a></li>
  209. <li><a href="http://www.topcoder.com/tc?module=ColorChange&amp;ph=112">Recent Color Changes</a></li>
  210. <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Design+Data+Feeds">Data Feeds</a></li>
  211. </ul></li>
  212. <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&amp;pt=1">Meet the Review Board</a></li>
  213. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_des_support')">Support / FAQs</a>
  214. <ul id="m_des_support">
  215. <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+Component+Design+Competitions">How to Compete</a></li>
  216. <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Design+Documentation">Documentation</a></li>
  217. <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Design+Ratings">Ratings</a></li>
  218. <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Design+Reliability+Ratings">Reliability Ratings</a></li>
  219. </ul></li>
  220. </ul></li>
  221. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_dev_competitions')">Software Development</a>
  222. <ul id="m_dev_competitions">
  223. <li><a href="http://www.topcoder.com/tc?module=ViewActiveContests&amp;ph=113">Active Contests</a></li>
  224. <li><a href="http://www.topcoder.com/tc?module=ContestStatus&amp;pt=2">Contest Status</a></li>
  225. <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&amp;pt=2">Review Opportunities</a></li>
  226. <li><a href="http://software.topcoder.com/review">Submit &amp; Review</a></li>
  227. <li><a href="http://www.topcoder.com/wiki/display/tc/TopCoder+UML+Tool">UML Tool</a></li>
  228. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_dev_stats')">Statistics</a>
  229. <ul id="m_dev_stats">
  230. <li><a href="http://www.topcoder.com/tc?module=CompList&amp;ph=113">Past Contests</a></li>
  231. <li><a href="http://www.topcoder.com/tc?module=ColorChange&amp;ph=113">Recent Color Changes</a></li>
  232. <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Development+Data+Feeds">Data Feeds</a></li>
  233. </ul></li>
  234. <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&amp;pt=2">Meet the Review Board</a></li>
  235. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_dev_support')">Support / FAQs</a>
  236. <ul id="m_dev_support">
  237. <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+Component+Development+Competitions">How to Compete</a></li>
  238. <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Development+Documentation">Documentation</a></li>
  239. <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Development+Ratings">Ratings</a></li>
  240. <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Development+Reliability+Ratings">Reliability Ratings</a></li>
  241. </ul></li>
  242. </ul></li>
  243. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_assembly_competitions')">Software Assembly</a>
  244. <ul id="m_assembly_competitions">
  245. <li><a href="http://www.topcoder.com/wiki/display/tc/Assembly">Overview</a></li>
  246. <li><a href="http://www.topcoder.com/tc?module=ViewAssemblyActiveContests">Active Contests</a></li>
  247. <li><a href="http://www.topcoder.com/tc?module=ContestStatus&amp;pt=14">Contest Status</a></li>
  248. <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&amp;pt=14">Review Opportunities</a></li>
  249. <li><a href="http://software.topcoder.com/review">Submit &amp; Review</a></li>
  250. <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&amp;pt=14">Meet the Review Board</a></li>
  251. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_assembly_stats')">Statistics</a>
  252. <ul id="m_assembly_stats">
  253. <li><a href="http://www.topcoder.com/tc?module=CompList&amp;ph=125">Past Contests</a></li>
  254. </ul></li>
  255. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_assembly_support')">Support / FAQs</a>
  256. <ul id="m_assembly_support">
  257. <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+Assembly+Competitions">How to Compete</a></li>
  258. <li><a href="http://www.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorial">Tutorial</a></li>
  259. <li><a href="http://www.topcoder.com/wiki/display/tc/Assembly+Competition+Documentation">Documentation</a></li>
  260. </ul></li>
  261. </ul></li>
  262. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_testing_competitions')">Application Testing</a>
  263. <ul id="m_testing_competitions">
  264. <li><a href="http://www.topcoder.com/wiki/display/tc/Testing">Overview</a></li>
  265. <li><a href="http://www.topcoder.com/tc?module=ActiveContests&amp;pt=13">Active Contests</a></li>
  266. <li><a href="http://www.topcoder.com/tc?module=ContestStatus&amp;pt=13">Contest Status</a></li>
  267. <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&amp;pt=13">Review Opportunities</a></li>
  268. <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&amp;pt=13">Meet the Review Board</a></li>
  269. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_testing_stats')">Statistics</a>
  270. <ul id="m_testing_stats">
  271. <li><a href="http://www.topcoder.com/tc?module=CompList&amp;ph=124">Past Contests</a></li>
  272. </ul></li>
  273. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_testing_support')">Support / FAQs</a>
  274. <ul id="m_testing_support">
  275. <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+Testing+Competitions">How to Compete</a></li>
  276. <li><a href="http://www.topcoder.com/wiki/display/tc/Testing+Competition+Tutorial">Tutorial</a></li>
  277. <li><a href="http://www.topcoder.com/wiki/display/tc/Testing+Competition+Documentation">Documentation</a></li>
  278. </ul></li>
  279. </ul></li>
  280. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_ui_prototype_competitions')">UI Prototype</a>
  281. <ul id="m_ui_prototype_competitions">
  282. <li><a href="http://www.topcoder.com/wiki/display/tc/UI+Prototype+Competitions">Overview</a></li>
  283. <li><a href="http://www.topcoder.com/tc?module=ActiveContests&amp;pt=19">Active Contests</a></li>
  284. <li><a href="http://www.topcoder.com/tc?module=ContestStatus&amp;pt=19">Contest Status</a></li>
  285. <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&amp;pt=19">Review Opportunities</a></li>
  286. <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&amp;pt=19">Meet the Review Board</a></li>
  287. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_ui_prototype_stats')">Statistics</a>
  288. <ul id="m_ui_prototype_stats">
  289. <li><a href="http://www.topcoder.com/tc?module=CompList&amp;pt=19">Past Contests</a></li>
  290. </ul></li>
  291. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_ui_prototype_support')">Support / FAQs</a>
  292. <ul id="m_ui_prototype_support">
  293. <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+IU+Prototype+Competitions">How to Compete</a></li>
  294. </ul></li>
  295. </ul></li>
  296. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_ria_build_competitions')">RIA Build</a>
  297. <ul id="m_ria_build_competitions">
  298. <li><a href="http://www.topcoder.com/wiki/display/tc/RIA+Build+Competitions">Overview</a></li>
  299. <li><a href="http://www.topcoder.com/tc?module=ActiveContests&amp;pt=24">Active Contests</a></li>
  300. <li><a href="http://www.topcoder.com/tc?module=ContestStatus&amp;pt=24">Contest Status</a></li>
  301. <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&amp;pt=24">Review Opportunities</a></li>
  302. <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&amp;pt=24">Meet the Review Board</a></li>
  303. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_ria_build_stats')">Statistics</a>
  304. <ul id="m_ria_build_stats">
  305. <li><a href="http://www.topcoder.com/tc?module=CompList&amp;pt=24">Past Contests</a></li>
  306. </ul></li>
  307. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_ria_build_support')">Support / FAQs</a>
  308. <ul id="m_ria_build_support">
  309. <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+RIA+Builds">How to Compete</a></li>
  310. </ul></li>
  311. </ul></li>
  312. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_bugraces_competitions')">Bug Races</a>
  313. <ul id="m_bugraces_competitions">
  314. <li><a href="http://www.topcoder.com/wiki/display/tc/Bug+Races">Overview</a></li>
  315. <li><a href="http://www.topcoder.com/wiki/display/tc/Active+Bug+Races">Active Contests</a></li>
  316. <li><a href="http://www.topcoder.com/wiki/display/tc/Bug+Races+Reviews">Review Opportunities</a></li>
  317. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_bugraces_support')">Support / FAQs</a>
  318. <ul id="m_bugraces_support">
  319. <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+Bug+Races">How to Compete</a></li>
  320. </ul></li>
  321. </ul></li>
  322. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_hs_competitions')">High School</a>
  323. <ul id="m_hs_competitions">
  324. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=hs&amp;d2=home">Overview</a></li>
  325. <li><a href="javascript:arena();">Launch Arena</a></li>
  326. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_hs_stats')">Statistics</a>
  327. <ul id="m_hs_stats">
  328. <li><a href="http://www.topcoder.com/tc?module=HSRoundOverview">Match Overview</a></li>
  329. <li><a href="http://www.topcoder.com/tc?module=HSRoundStatsTeam">Match Results (Team)</a></li>
  330. <li><a href="http://www.topcoder.com/tc?module=HSRoundStatsInd">Match Results (Indiv.)</a></li>
  331. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=hs&amp;d2=match_editorials&amp;d3=archive">Match Editorials</a></li>
  332. <li><a href="http://www.topcoder.com/tc?module=ColorChange&amp;ratid=2">Recent Color Changes</a></li>
  333. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=hs&amp;d2=support&amp;d3=dataFeed">Data Feeds</a></li>
  334. </ul></li>
  335. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=hs&amp;d2=sponsorship">Sponsorship</a></li>
  336. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_hs_support')">Support / FAQs</a>
  337. <ul id="m_hs_support">
  338. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=hs&amp;d2=support&amp;d3=index">How to Compete</a></li>
  339. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=hs&amp;d2=support&amp;d3=faqIndex">FAQs</a></li>
  340. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=hs&amp;d2=support&amp;d3=sampleProblems">Sample Problems</a></li>
  341. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=hs&amp;d2=support&amp;d3=ratings">Rating System</a></li>
  342. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=help&amp;d2=problemWriter&amp;node=hs_write">Write Problems</a></li>
  343. </ul></li>
  344. </ul></li>
  345. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_long_contests')">Marathon Matches</a>
  346. <ul id="m_long_contests">
  347. <li><a href="http://www.topcoder.com/longcontest/?module=ViewActiveContests">Active Contests</a></li>
  348. <li><a href="http://www.topcoder.com/longcontest/?module=ViewPractice">Practice</a></li>
  349. <li><a href="http://www.topcoder.com/longcontest/?module=ViewQueue">Queue Status</a></li>
  350. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_long_stats')">Statistics</a>
  351. <ul id="m_long_stats">
  352. <li><a href="http://www.topcoder.com/longcontest/stats/?module=MatchList">Match Archive</a></li>
  353. <li><a href="http://www.topcoder.com/longcontest/stats/?module=ViewOverview">Match Overview</a></li>
  354. <li><a href="http://www.topcoder.com/longcontest/stats/?module=MatchWinners">Match Winners</a></li>
  355. <li><a href="http://www.topcoder.com/longcontest/?module=Static&amp;d1=match_editorials&amp;d2=archive">Match Editorials</a></li>
  356. <li><a href="http://www.topcoder.com/longcontest/?module=Static&amp;d1=support&amp;d2=dataFeed">Data Feeds</a></li>
  357. </ul></li>
  358. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_long_support')">Support / FAQs</a>
  359. <ul id="m_long_support">
  360. <li><a href="http://www.topcoder.com/longcontest/?module=Static&amp;d1=instructions">How to Compete</a></li>
  361. <li><a href="http://www.topcoder.com/longcontest/?module=Static&amp;d1=support&amp;d2=ratings">Rating System</a></li>
  362. </ul></li>
  363. </ul></li>
  364. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_tournaments')">Tournaments</a>
  365. <ul id="m_tournaments">
  366. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=tournaments&amp;d2=home">TopCoder</a></li>
  367. <li><a href="http://www.topcoder.com/pl/">Powered by TopCoder</a></li>
  368. <li><a href="http://www.topcoder.com/tc?module=CRPFStatic&amp;d1=crpf&amp;d2=crpf_overview">Charity</a></li>
  369. </ul></li>
  370. <li><a href="http://www.topcoder.com/dr">The Digital Run</a></li>
  371. <li class="exp_ed"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_edu_content')">Educational Content</a>
  372. <ul id="m_edu_content" class="OPEN">
  373. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=education&amp;d2=overview">Overview</a></li>
  374. <li class="highlight"><a href="http://www.topcoder.com/tc?module=Static&amp;d1=tutorials&amp;d2=alg_index">Algorithm Tutorials</a></li>
  375. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=tutorials&amp;d2=comp_index">Component Tutorials</a></li>
  376. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=tutorials&amp;d2=mm_index">Marathon Tutorials</a></li>
  377. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=features&amp;d2=archive">Features</a></li>
  378. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=help&amp;d2=writeForTC">Write for TopCoder</a></li>
  379. </ul></li>
  380. <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Get+Paid+for+Competing">How to Get Paid</a></li>
  381. </ul></li>
  382. <li><a href="http://forums.topcoder.com/">Forums</a></li>
  383. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=calendar&amp;d2=thisMonth">Event Calendar</a></li>
  384. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=pressroom&amp;d2=index">Press Room</a></li>
  385. <li><a href="http://www.topcoder.com/tc?&amp;module=SurveyList">Surveys</a></li>
  386. <li><a href="http://www.topcoder.com/tc?module=MyHome">My TopCoder</a></li>
  387. <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_about_tc')">About TopCoder</a>
  388. <ul id="m_about_tc">
  389. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=about&amp;d2=index">Overview</a></li>
  390. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=about&amp;d2=contactus">Contact Us</a></li>
  391. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=about&amp;d2=whyjoin">Why Join TopCoder?</a></li>
  392. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=about&amp;d2=jobs">Working at TopCoder</a></li>
  393. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=about&amp;d2=management">Management Team</a></li>
  394. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=about&amp;d2=terms">Terms, Revisions</a></li>
  395. <li><a href="http://www.topcoder.com/tc?module=Static&amp;d1=about&amp;d2=privacy">Privacy Policy</a></li>
  396. </ul></li></ul>
  397. <div style="padding: 10px 0px 0px 17px; float: left;">
  398. <a href="http://www.topcoder.com/tc?module=LinkTracking&amp;link=http://software.topcoder.com/&amp;refer=leftnav"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/tc_direct.png" alt="TopCoder Direct"></a>
  399. </div>
  400. <div id="navbarSearch">
  401. <b>Member Search:</b>
  402. <form action="http://www.topcoder.com/tc" method="get" name="simpleSearchForm" class="noSpace" id="simpleSearchForm">
  403. <input class="noSpace" name="module" value="SimpleSearch" type="hidden">
  404. <input class="noSpace" name="ha" value="Handle:" size="12" maxlength="15" onfocus="javascript: if (document.simpleSearchForm.ha.value=='Handle:') document.simpleSearchForm.ha.value = '';" onblur="javascript:if (document.simpleSearchForm.ha.value == '')document.simpleSearchForm.ha.value = 'Handle:';" type="text">
  405. <a class="gMetal" href="javascript:void%20document.simpleSearchForm.submit();">Go</a><br>
  406. <a class="gMetal" href="http://www.topcoder.com/tc?module=ViewAdvanced">Advanced Search</a>
  407. </form>
  408. </div>
  409. </div>
  410. <div style="padding: 0px 0px 23px; float: left; clear: left;"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/leftnav_bottom.gif" alt=""></div>
  411. <div style="margin: 0px; float: left; clear: left; width: 170px;" align="center">
  412. <img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/brackets.png" alt="" style="margin-bottom: 23px;">
  413. </div>
  414. </td>
  415. <!-- Left Column Ends -->
  416. <!-- Center Column Begins -->
  417. <td align="center" width="100%"><div class="tutorBodyFull">
  418. <table class="pageTitleTable" cellpadding="0" cellspacing="0">
  419. <tbody><tr>
  420. <td class="pageTitle" width="100%"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/header_alg_tut.gif" alt="alg_tut" border="0"></td>
  421. <td class="pageSubtitle" align="right">&nbsp;&nbsp;</td>
  422. </tr>
  423. </tbody></table>
  424. <div class="linkBox"> <a href="http://www.topcoder.com/tc?module=Static&amp;d1=tutorials&amp;d2=alg_index">Archive</a><br>
  425. <span class="invisible" id="printableLink"><a href="javascript:makeInvisible();">Printable view</a><br>
  426. </span> <span id="navigableLink" class=""><a href="javascript:makeNavigable();">Normal view</a><br>
  427. </span>
  428. <a href="http://forums.topcoder.com/?module=ThreadList&amp;forumID=514543">Discuss this article</a><br>
  429. <a href="http://www.topcoder.com/tc?module=Static&amp;d1=help&amp;d2=writeForTC">Write for TopCoder</a>
  430. </div>
  431. <span class="bigTitle">Prime Numbers, Factorization and Euler Function</span> <br>
  432. <br>
  433. <div class="authorPhoto"> <img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/medv_big.jpg" alt="Author"> </div>
  434. <div class="authorText"> By&nbsp;
  435. <a href="http://www.topcoder.com/tc?module=MemberProfile&amp;cr=269207&amp;tab=alg" class="coderTextBlue">medv</a>
  436. <br>
  437. <em>TopCoder Member</em> </div>
  438. <br clear="all">
  439. <p><i>In addition to being a TopCoder member,
  440. <a href="http://www.topcoder.com/tc?module=MemberProfile&amp;cr=269207&amp;tab=alg" class="coderTextBlue">medv</a>
  441. is a lecturer in Kiev National University's cybernetics faculty.</i></p>
  442. <p>Prime
  443. numbers and their properties were extensively studied by the ancient
  444. Greek mathematicians. Thousands of years later, we commonly use the
  445. different properties of integers that they discovered to solve
  446. problems. In this article we&#8217;ll review some definitions, well-known
  447. theorems, and number properties, and look at some problems associated
  448. with them.</p>
  449. <p><strong>A prime number</strong> is a positive integer, which is divisible on 1 and itself. The other integers, greater than 1, are <strong>composite</strong>. <strong>Coprime</strong> integers are a set of integers that have no common divisor other than 1 or -1. </p>
  450. <p><strong> The fundamental theorem of arithmetic:</strong><br>
  451. Any positive integer can be divided in primes in essentially only one
  452. way. The phrase 'essentially one way' means that we do not consider the
  453. order of the factors important. </p>
  454. <p>One
  455. is neither a prime nor composite number. One is not composite because
  456. it doesn&#8217;t have two distinct divisors. If one is prime, then number 6,
  457. for example, has two different representations as a product of prime
  458. numbers: 6 = 2 * 3 and 6 = 1 * 2 * 3. This would contradict the
  459. fundamental theorem of arithmetic. </p>
  460. <p><strong>Euclid&#8217;s theorem:</strong><br>
  461. There is no largest prime number. </p>
  462. <p><strong> </strong>To prove this, let's consider only <em>n</em> prime numbers: <em>p</em><sub>1</sub>, <em>p</em><sub>2</sub>, &#8230;, <em>p<sub>n</sub></em>. But no prime <em>p<sub>i</sub></em> divides the number </p>
  463. <p>N = <em>p</em><sub>1</sub> * <em>p</em><sub>2</sub> * &#8230; * <em>p<sub>n</sub></em> + 1, </p>
  464. <p>so N cannot be composite. This contradicts the fact that the set of primes is finite. </p>
  465. <p><strong>Exercise 1.</strong> Sequence <em>a<sub>n</sub></em> is defined recursively: </p>
  466. <p><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/prime-eq1.jpg" alt=""></p>
  467. <p>Prove that <em>a</em><sub><em>i</em></sub> and <em>a</em><sub><em>j</em></sub>, <em>i</em> <font face="Symbol">š</font> <em>j</em> are relatively prime. </p>
  468. <p><strong> </strong>Hint: Prove that <em>a</em><sub><em>n</em>+1</sub> = <em>a</em><sub>1</sub><em>a</em><sub>2</sub>&#8230;<em>a</em><sub><em>n</em></sub> + 1 and use Euclid&#8217;s theorem. </p>
  469. <p><strong>Exercise 2.</strong> Ferma numbers F<sub><em>n</em></sub> (<em>n</em> &#8805; 0) are positive integers of the form </p>
  470. <p><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/prime-eq2.jpg" alt=""></p>
  471. <p>Prove that F<em><sub>i</sub></em> and F<em><sub>j</sub></em>, <em>i</em> &#8800; <em>j</em> are relatively prime. </p>
  472. <p> Hint: Prove that F<sub><em>n</em> +1</sub> = F<sub>0</sub>F<sub>1</sub>F<sub>2</sub>&#8230;F<sub><em>n</em></sub> + 2 and use Euclid&#8217;s theorem.</p>
  473. <p><strong>Dirichlet&#8217;s theorem about arithmetic progressions:</strong><br>
  474. For any two positive coprime integers <em>a</em> and <em>b</em> there are infinitely many primes of the form <em>a</em> + <em>n*b</em>, where <em>n</em> &gt; 0. </p>
  475. <p><strong> Trial division: <br>
  476. </strong>
  477. Trial division is the simplest of all factorization techniques. It
  478. represents a brute-force method, in which we are trying to divide <em>n</em> by every number <em>i</em> not greater than the square root of<em> n</em>. (Why don't we need to test values larger than the square root of <em>n</em>?) The procedure <em>factor</em> prints the factorization of number <em>n</em>. The factors will be printed in a line, separated with one space. The number <em>n</em> can contain no more than one factor, greater than <em>n</em>. </p>
  479. <pre> void factor(int n)
  480. {
  481. int i;
  482. for(i=2;i&lt;=(int)sqrt(n);i++)
  483. {
  484. while(n % i == 0)
  485. {
  486. printf("%d ",i);
  487. n /= i;
  488. }
  489. }
  490. if (n &gt; 1) printf("%d",n);
  491. printf("\n");
  492. }
  493. </pre>
  494. <p> Consider a problem that asks you to find the factorization of integer <em>g</em>(-2<sup>31</sup> &lt; <em>g</em> &lt;2<sup>31</sup>) in the form </p>
  495. <p><em>g</em> = <em>f</em><sub>1</sub> x <em>f</em><sub>2</sub> x &#8230; x <em>f</em><sub><em>n</em></sub> or <em>g</em> = -1 x <em>f</em><sub>1</sub> x <em>f</em><sub>2</sub> x &#8230; x <em>f</em><sub>n</sub></p>
  496. <p> where <em>f</em><sub><em>i</em></sub> is a prime greater than 1 and <em>f</em><sub><em>i</em></sub> &#8804; <em>f</em><sub><em>j</em></sub> for <em>i</em> &lt; <em>j</em>. </p>
  497. <p> For example, for g = -192 the answer is -192 = -1 x 2 x 2 x 2 x 2 x 2 x 2 x 3. </p>
  498. <p> To solve the problem, it is enough to use trial division as shown in function <em>factor</em>. </p>
  499. <p><strong>Sieve of Eratosthenes:</strong><br>
  500. The most efficient way to find all small primes was proposed by the
  501. Greek mathematician Eratosthenes. His idea was to make a list of
  502. positive integers not greater than <em>n</em> and sequentially strike out the multiples of primes less than or equal to the square root of <em>n</em>. After this procedure only primes are left in the list. </p>
  503. <p>The procedure of finding prime numbers <em>gen_primes </em>will use an array primes[MAX] as a list of integers. The elements of this array will be filled so that </p>
  504. <p><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/prime-eq3.jpg" alt=""></p>
  505. <p>At the beginning we mark all numbers as prime. Then for each prime number <em>i</em> (<em>i</em> &#8805; 2), not greater than &#8730;MAX, we mark all numbers <em>i</em>*<em>i</em>, <em>i</em>*(<em>i</em> + 1), &#8230; as composite. </p>
  506. <pre> void gen_primes()
  507. {
  508. int i,j;
  509. for(i=0;i&lt;MAX;i++) primes[i] = 1;
  510. for(i=2;i&lt;=(int)sqrt(MAX);i++)
  511. if (primes[i])
  512. for(j=i;j*i&lt;MAX;j++) primes[i*j] = 0;
  513. }
  514. </pre>
  515. <p> For example, if MAX = 16, then after calling <em>gen_primes</em>, the array &#8216;primes&#8217; will contain next values: </p>
  516. <table class="stat" style="width: 100%;" cellpadding="0" cellspacing="0">
  517. <tbody><tr nowrap="nowrap">
  518. <td class="valueC"><em>i</em></td>
  519. <td class="valueC"> 0 </td>
  520. <td class="valueC"> 1 </td>
  521. <td class="valueC"> 2 </td>
  522. <td class="valueC"> 3 </td>
  523. <td class="valueC"> 4 </td>
  524. <td class="valueC"> 5 </td>
  525. <td class="valueC"> 6 </td>
  526. <td class="valueC"> 7 </td>
  527. <td class="valueC"> 8 </td>
  528. <td class="valueC"> 9 </td>
  529. <td class="valueC"> 10 </td>
  530. <td class="valueC"> 11 </td>
  531. <td class="valueC"> 12 </td>
  532. <td class="valueC"> 13 </td>
  533. <td class="valueC"> 14 </td>
  534. <td class="valueC"> 15 </td>
  535. </tr>
  536. <tr>
  537. <td class="valueC"> primes[<em>i</em>] </td>
  538. <td class="valueC"> 1 </td>
  539. <td class="valueC"> 1 </td>
  540. <td class="valueC"> 1 </td>
  541. <td class="valueC"> 1 </td>
  542. <td class="valueC"> 0 </td>
  543. <td class="valueC"> 1 </td>
  544. <td class="valueC"> 0 </td>
  545. <td class="valueC"> 1 </td>
  546. <td class="valueC"> 0 </td>
  547. <td class="valueC"> 0 </td>
  548. <td class="valueC"> 0 </td>
  549. <td class="valueC"> 1 </td>
  550. <td class="valueC"> 0 </td>
  551. <td class="valueC"> 1 </td>
  552. <td class="valueC"> 0 </td>
  553. <td class="valueC"> 0 </td>
  554. </tr>
  555. </tbody></table>
  556. <p><strong>Goldbach's Conjecture:</strong><br>
  557. For any integer <em>n</em> (<em>n</em> &#8805; 4) there exist two prime numbers <em>p</em><sub>1</sub> and <em>p</em><sub>2</sub> such that <em>p</em><sub>1</sub> + <em>p</em><sub>2</sub> = <em>n</em>. In a problem we might need to find the number of essentially different pairs (<em>p</em><sub>1</sub>, <em>p</em><sub>2</sub>), satisfying the condition in the conjecture for a given even number<em> n</em> (4 &#8804; <em>n</em> &#8804; 2 15). (The word &#8216;essentially&#8217; means that for each pair (<em>p</em><sub>1</sub>, <em>p</em><sub>2</sub>) we have <em>p</em><sub>1 </sub>&#8804;<em> </em><em>p</em><sub>2</sub>.) </p>
  558. <p>For example, for <em>n</em> = 10 we have two such pairs: 10 = 5 + 5 and 10 = 3 + 7. </p>
  559. <p><strong><em> </em></strong>To solve this,<strong></strong>as <em>n</em> &#8804; 2<sup>15</sup> = 32768, we&#8217;ll fill an array primes[32768] using function <em>gen_primes</em>. We are interested in primes, not greater than 32768. </p>
  560. <p>The function <em>FindSol</em>(<em>n</em>) finds the number of different pairs (<em>p</em><sub>1</sub>, <em>p</em><sub>2</sub>), for which <em>n</em> = <em>p</em><sub>1</sub> + <em>p</em><sub>2</sub>. As <em>p</em><sub>1</sub> &#8804; <em>p</em><sub>2</sub>, we have <em>p</em><sub>1</sub> &#8804; <em>n</em>/2. So to solve the problem we need to find the number of pairs (<em>i</em>, <em>n</em> &#8211; <em>i</em>), such that <em>i</em> and <em>n</em> &#8211; <em>i</em> are prime numbers and 2 &#8804; <em>i</em> &#8804; <em>n</em>/2. </p>
  561. <pre> int FindSol(int n)
  562. {
  563. int i,res=0;
  564. for(i=2;i&lt;=n/2;i++)
  565. if (primes[i] &amp;&amp; primes[n-i]) res++;
  566. return res;
  567. }
  568. </pre>
  569. <p><strong> Euler&#8217;s totient function<br>
  570. </strong> The number of positive integers, not greater than <em>n</em>, and relatively prime with <em>n</em>, equals to Euler&#8217;s totient function &#966; (<em>n</em>). In symbols we can state that </p>
  571. <p> &#966; (<em>n</em>) ={<em>a</em> <font face="Symbol">Î</font> N: 1 &#8804; <em>a</em> &#8804; <em>n</em>, gcd(<em>a</em>, <em>n</em>) = 1} </p>
  572. <p>This function has the following properties: </p>
  573. <ol>
  574. <li> If <em>p</em> is prime, then &#966; (<em>p</em>) = <em>p</em> &#8211; 1 and &#966; (<i>p<sup>a</sup></i>) = <em>p</em><em> a</em> * (1 &#8211; 1/<em>p</em>) for any <em>a</em>. </li>
  575. <li> If <em>m</em> and <em>n</em> are coprime, then &#966; (<em>m</em> * <em>n</em>) = &#966; (<em>m</em>) * &#966; (<em>n</em>). </li>
  576. <li> If <em>n</em> = <img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/prime-eq4.jpg" alt="">, then Euler function can be found using formula: </li>
  577. </ol>
  578. <p>&#966; (<em>n</em>) = <em>n</em> * (1 &#8211; 1/<em>p</em> 1) * (1 &#8211; 1/<em>p</em> 2) * ... * (1 &#8211; 1/<em>p k</em>) </p>
  579. <p>The function fi(<em>n</em>) finds the value of &#966;(<em>n</em>): </p>
  580. <pre> int fi(int n)
  581. {
  582. int result = n;
  583. for(int i=2;i*i &lt;= n;i++)
  584. {
  585. if (n % i == 0) result -= result / i;
  586. while (n % i == 0) n /= i;
  587. }
  588. if (n &gt; 1) result -= result / n;
  589. return result;
  590. }
  591. </pre>
  592. <p>For example, to find &#966;(616) we need to factorize the argument: 616 = 2<sup>3</sup> * 7 * 11. Then, using the formula, we&#8217;ll get: </p>
  593. <p>&#966;(616) = 616 * (1 &#8211; 1/2) * (1 &#8211; 1/7) * (1 &#8211; 1/11) = 616 * 1/2 * 6/7 * 10/11 = 240. </p>
  594. <p>Say you've got a problem that, for a given integer <em>n</em> (0 &lt; <em>n</em> &#8804; 10<sup>9</sup>), asks you to find the number of positive integers less than <em>n</em> and relatively prime to <em>n</em>. For example, for <em>n</em> = 12 we have 4 such numbers: 1, 5, 7 and 11. </p>
  595. <p>The solution: The number of positive integers less than <em>n</em> and relatively prime to <em>n</em> equals to &#966;(<em>n</em>). In this problem, then, we need do nothing more than to evaluate Euler&#8217;s totient function. </p>
  596. <p>Or consider a scenario where you are asked to calculate a function Answer(<em>x</em>, <em>y</em>), with <em>x</em> and <em>y</em> both integers in the range [1, <em>n</em>], 1 &#8804;<em> n</em> &#8804; 50000. If you know Answer(<em>x</em>, <em>y</em>), then you can easily derive Answer(<em>k</em>*<em>x</em>, <em>k</em>*<em>y</em>) for any integer <em>k</em>. In this situation you want to know how many values of Answer(<em>x</em>, <em>y</em>) you need to precalculate. The function Answer is not symmetric.<strong></strong></p>
  597. <p>For example, if <em>n</em>
  598. = 4, you need to precalculate 11 values: Answer(1, 1), Answer(1, 2),
  599. Answer(2, 1), Answer(1, 3), Answer(2, 3), Answer(3, 2), Answer(3, 1),
  600. Answer(1, 4), Answer(3, 4), Answer(4, 3) and Answer(4, 1). </p>
  601. <p>The solution here is to let res(<em>i</em>) be the minimum number of Answer(<em>x</em>, <em>y</em>) to precalculate, where <em>x</em>, <em>y</em><font face="Symbol"> Î</font>{1, &#8230;, <em>i</em>}. It is obvious that res(1) = 1, because if <em>n</em> = 1, it is enough to know Answer(1, 1). Let we know res(<em>i</em>). So for <em>n</em> = <em>i</em> + 1 we need to find Answer(1, <em>i</em> + 1), Answer(2, <em>i</em> + 1), &#8230; , Answer(<em>i</em> + 1, <em>i</em> + 1), Answer(<em>i</em> + 1, 1), Answer(<em>i</em> + 1, 2), &#8230; , Answer(<em>i</em> + 1, <em>i</em>). </p>
  602. <p>The values Answer(<em>j</em>, <em>i</em> + 1) and Answer(<em>i</em> + 1, <em>j</em>), <em>j</em> <font face="Symbol">Î</font>{1, &#8230;, <em>i</em> + 1}, can be found from known values if GCD(<em>j</em>, <em>i</em> + 1) &gt; 1, i.e. if the numbers <em>j</em> and <em>i</em> + 1 are not common primes. So we must know all the values Answer(<em>j</em>, <em>i</em> + 1) and Answer(<em>i</em> + 1, <em>j</em>) for which <em>j</em> and <em>i</em> + 1 are cop

Large files are truncated, but you can click here to view the full file