/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

  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 coprime. The number of such values equals to 2 * &#966; (<em>i</em> + 1), where &#966; is an Euler&#8217;s totient function. So we have a recursion to solve a problem: </p>
  603. <blockquote>res(1) = 1,<br>
  604. res(<em>i</em> + 1) = res(<em>i</em>) + 2 * j (<em>i</em> + 1), <em>i</em> &gt; 1 </blockquote>
  605. <p><strong>Euler&#8217;s totient theorem:</strong><br>
  606. If <em>n</em> is a positive integer and <em>a</em> is coprime to <em>n</em>, then <em>a</em> <sup>&#966; (<em>n</em>)</sup> <font face="Symbol">?</font> 1 (mod <em>n</em>). </p>
  607. <p><strong> Fermat&#8217;s little theorem:</strong><br>
  608. If <em>p</em> is a prime number, then for any integer <em>a</em> that is coprime to <em>n</em>, we have </p>
  609. <p><em> a <sup>p</sup></em> &#8801; <em>a</em> (mod <em>p</em>) </p>
  610. <p> This theorem can also be stated as: If <em>p</em> is a prime number and <em>a</em> is coprime to <em>p</em>, then </p>
  611. <p><em>a</em> <sup><i>p</i> -1</sup> &#8801; 1 (mod <em>p</em>) </p>
  612. <p>Fermat&#8217;s little theorem is a special case of Euler&#8217;s totient theorem when <em>n</em> is prime. </p>
  613. <p><strong>The number of divisors:<br>
  614. </strong> If <em>n</em> = <img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/prime-eq4.jpg" alt="">, then the number of its positive divisors equals to </p>
  615. <p>(<em>a</em><sub>1</sub> + 1) * (<em>a</em><sub>2</sub> + 1) * &#8230; * (<em>a</em><sub><em>k</em></sub> + 1) </p>
  616. <p> For a proof, let A<em> i</em> be the set of divisors <img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/prime-eq5.jpg" alt="">. Any divisor of number <em>n</em> can be represented as a product <em>x</em><sub>1</sub> * <em>x</em><sub>2</sub> * &#8230; * <em>x</em> <sub><em>k</em></sub> , where <em>x</em><sub><em>i</em></sub> <font face="Symbol">Î</font> A<sub><em>i</em></sub>. As |A<sub><em>i</em></sub>| = <em>a</em><sub><em>i</em></sub> + 1, we have </p>
  617. <p>(<em>a</em><sub>1</sub> + 1) * (<em>a</em><sub>2</sub> + 1) * &#8230; * (<em>a</em><sub><em>k</em></sub> + 1) </p>
  618. <p>possibilities to get different products <em>x</em><sub>1</sub> * <em>x</em><sub>2</sub> * &#8230; * <em>x</em><sub><em>k</em></sub>.</p>
  619. <p>For
  620. example, to find the number of divisors for 36, we need to factorize it
  621. first: 36 = 2? * 3?. Using the formula above, we&#8217;ll get the divisors
  622. amount for 36. It equals to (2 + 1) * (2 + 1) = 3 * 3 = 9. There are 9
  623. divisors for 36: 1, 2, 3, 4, 6, 9, 12, 18 and 36. </p>
  624. <p>Here's another problem to think about: For a given positive integer <em>n</em> (0 &lt; <em>n</em> &lt; 2<sup>31</sup>) we need to find the number of such <em>m</em> that 1 &#8804; <em>m</em> &#8804; <em>n</em>, GCD(<em>m</em>, <em>n</em>) &#8800; 1 and GCD(<em>m</em>, <em>n</em>) &#8800;<em> m</em>. For example, for <em>n</em> = 6 we have only one such number <em>m</em> = 4. </p>
  625. <p>The solution is to subtract from <em>n</em> the amount of numbers, coprime with it (its amount equals to &#966;(<em>n</em>)) and the amount of its divisors. But the number 1 simultaneously is coprime with <em>n</em> and is a divisor of <em>n</em>. So to obtain the difference we must add 1. If <em>n</em> = <img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/prime-eq4.jpg" alt=""> is a factorization of <em>n</em>, the number <em>n</em> has (<em>a</em><sub>1</sub> + 1) * (<em>a</em><sub>2</sub> + 1) * &#8230; * (<em>a</em><sub><em>k</em></sub> + 1) divisors. So the answer to the problem for a given <em>n</em> equals to </p>
  626. <p><em>n</em> &#8211; &#966;(<em>n</em>) &#8211; (<em>a</em><sub>1</sub> + 1) * (<em>a</em><sub>2</sub> + 1) * &#8230; * (<em>a</em><sub><em>k</em></sub> + 1) + 1 </p>
  627. <p><strong> Practice Room:</strong><br>
  628. Want to put some of these theories into practice? Try out these problems, from the <a href="http://www.topcoder.com/tc?module=ProblemArchive">TopCoder Archive</a>:</p>
  629. <ul>
  630. <li><a href="http://www.topcoder.com/stat?c=problem_statement&amp;pm=2986&amp;rd=5862"> Refactoring</a> (SRM 216) </li>
  631. <li><a href="http://www.topcoder.com/stat?c=problem_statement&amp;pm=3458&amp;rd=5869"> PrimeAnagrams</a> (SRM 223) </li>
  632. <li><a href="http://www.topcoder.com/stat?c=problem_statement&amp;pm=4481&amp;rd=6538"> DivisibilityCriteria</a> (SRM 239) </li>
  633. <li><a href="http://www.topcoder.com/stat?c=problem_statement&amp;pm=4475&amp;rd=8012"> PrimePolynom</a> (SRM 259) </li>
  634. <li><a href="http://www.topcoder.com/stat?c=problem_statement&amp;pm=6186&amp;rd=9823"> DivisorInc</a> (SRM 302) </li>
  635. <li><a href="http://www.topcoder.com/stat?c=problem_statement&amp;pm=6063&amp;rd=9824"> PrimePalindromic</a> (SRM 303) </li>
  636. <li><a href="http://www.topcoder.com/stat?c=problem_statement&amp;pm=6195&amp;rd=9825"> RugSizes</a> (SRM 304) </li>
  637. <li><a href="http://www.topcoder.com/stat?c=problem_statement&amp;pm=6408&amp;rd=9826"> PowerCollector</a> (SRM 305) </li>
  638. <li><a href="http://www.topcoder.com/stat?c=problem_statement&amp;pm=6083&amp;rd=9987"> PreprimeNumbers</a> (SRM 307) </li>
  639. <li><a href="http://www.topcoder.com/stat?c=problem_statement&amp;pm=2017"> EngineersPrimes</a> (SRM 181) </li>
  640. <li><a href="http://www.topcoder.com/stat?c=problem_statement&amp;pm=2342"> SquareFree</a> (SRM 190) </li>
  641. </ul>
  642. <p>&nbsp; </p>
  643. <br>
  644. <br>
  645. </div></td>
  646. <!-- Center Column Ends -->
  647. <!-- Right Column Begins -->
  648. <td class="invisible" id="onRight" width="170">
  649. <script type="text/javascript" language="javascript">
  650. </script>
  651. <div class="rightColContent">
  652. <br><br>
  653. </div>
  654. </td>
  655. <!-- Right Column Ends -->
  656. <!-- Gutter -->
  657. <td width="10"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/clear.gif" border="0" height="1" width="10"></td>
  658. <!-- Gutter Ends -->
  659. </tr>
  660. </tbody></table>
  661. <div class="invisible" id="onBottom">
  662. <table border="0" cellpadding="0" cellspacing="0" width="100%">
  663. <tbody>
  664. <tr>
  665. <td class="footer" width="100%">
  666. <a href="http://www.topcoder.com/" class="footerLinks">Home</a>&nbsp;&nbsp;|&nbsp;&nbsp;
  667. <a href="http://www.topcoder.com/tc?module=Static&amp;d1=about&amp;d2=index" class="footerLinks">About TopCoder</a>&nbsp;&nbsp;|&nbsp;&nbsp;
  668. <a href="http://www.topcoder.com/tc?module=Static&amp;d1=pressroom&amp;d2=index" class="footerLinks">Press Room</a>&nbsp;&nbsp;|&nbsp;&nbsp;
  669. <a href="http://www.topcoder.com/tc?module=Static&amp;d1=about&amp;d2=contactus" class="footerLinks">Contact Us</a>&nbsp;&nbsp;|&nbsp;&nbsp;
  670. <a href="http://www.topcoder.com/tc?module=Static&amp;d1=about&amp;d2=jobs" class="footerLinks">Careers</a>&nbsp;&nbsp;|&nbsp;&nbsp;
  671. <a href="http://www.topcoder.com/tc?module=Static&amp;d1=about&amp;d2=privacy" class="footerLinks">Privacy</a>&nbsp;&nbsp;|&nbsp;&nbsp;
  672. <a href="http://www.topcoder.com/tc?module=Static&amp;d1=about&amp;d2=terms" class="footerLinks">Terms</a>
  673. <br>
  674. <a href="http://www.topcoder.com/tc" class="footerLinks">Competitions</a>&nbsp;&nbsp;|&nbsp;&nbsp;
  675. <a href="http://software.topcoder.com/" class="footerLinks">Software</a> </td>
  676. </tr>
  677. <tr><td class="copyright" width="100%">Copyright Š 2001-2008, TopCoder, Inc. All rights reserved.</td></tr>
  678. </tbody>
  679. </table>
  680. <script type="text/javascript">
  681. var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
  682. document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
  683. </script><script src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/ga.js" type="text/javascript"></script>
  684. <script type="text/javascript">
  685. var pageTracker = _gat._getTracker("UA-6340959-1");
  686. pageTracker._trackPageview();
  687. </script>
  688. </div>
  689. </body></html>