/mycila-math/trunk/todo/webpages/Prime Numbers, Factorization and Euler Function .html
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
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html><head>
- <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
- <title>Algorithm Tutorials</title>
- <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">
- <link type="text/css" rel="stylesheet" href="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/style.css">
- <link type="text/css" rel="stylesheet" href="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/coders.css">
- <link type="text/css" rel="stylesheet" href="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/tcStyles20080219.css">
- <link type="text/css" rel="stylesheet" href="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/jobsRemix.css">
- <script language="JavaScript" src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/print.js"></script>
- <style type="text/css">
- .codeBox
- {
- width: 600;
- padding: 10px;
- margin: 20px;
- color: #333;
- font-size: 11px;
- font-weight: normal;
- line-height: 14px;
- background-color: #EEEEEE;
- border: 1px solid #999;
- }
- </style>
- </head><body>
- <div class="invisible" id="onTop">
-
- <script type="text/javascript" src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/popup.js"></script>
- <div id="shortcutBar">
- <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>
- <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>
- <div class="icon"><a href="http://www.topcoder.com/tc?module=ActiveContests&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>
- <div class="icon"><a href="http://www.topcoder.com/tc?module=ActiveContests&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>
- <div class="icon"><a href="http://www.topcoder.com/tc?module=ActiveContests&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>
- <div class="icon"><a href="http://www.topcoder.com/tc?module=ViewActiveContests&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>
- <div class="icon"><a href="http://www.topcoder.com/tc?module=ViewActiveContests&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>
- <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>
- <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>
- <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>
- <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>
- </div>
- <div id="globalPopup" class="popUp"><div id="globalPopupText"></div></div>
- <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>
- <div style="margin: 0px 290px 0px 280px;" align="center">
- <div id="outerLogo">
- <div id="innerLogo">
- <a href="http://www.topcoder.com/"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/topcoder.gif" alt="TopCoder" style="display: block;"></a>
- </div>
- </div>
- </div>
- <div class="memberCountBox">
- Member Count: 206,836 -
- May 26, 2009
- <a class="gMetal" href="javascript:tcTime()">[Get Time]</a>
- </div>
- <div class="topBar">
- <div style="margin: 5px 0px 0px; float: right;">
-
- <a class="gMetal" href="http://www.topcoder.com/tc?&module=Login">Login</a>
-
-
- </div>
- </div>
- </div>
- <table border="0" cellpadding="0" cellspacing="0" width="100%">
- <tbody><tr valign="top">
- <!-- Left Column Begins-->
- <td class="invisible" id="onLeft" width="180">
-
-
- <script language="JavaScript" type="text/javascript" src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/arena.js"></script>
- <script language="JavaScript" type="text/javascript">
- <!--
- function toggleMenu(menuTitle,menuID){
- var menu = document.getElementById(menuID);
- if(menu.style.display == 'block') menu.className = 'CLOSED';
- else if(menu.className == 'OPEN' && menu.style.display != 'none') menu.className = 'CLOSED';
- else {
- menu.className = 'OPEN';
- }
- if(menuTitle.blur)menuTitle.blur();
- if(menuTitle.className == 'exp') menuTitle.className = 'exp_ed';
- else menuTitle.className = 'exp';
- return;
- }
- function flipMenu(myMenuName){
- var menuName = document.getElementById(myMenuName);
- menuName.className = 'exp_ed';
- }
- // -->
- </script>
- <div style="padding: 0px;"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/leftnav_top.gif" alt=""></div>
- <div id="navbar">
-
- <ul>
- <li class="exp_ed"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_competitions')">Competitions</a>
- <ul id="m_competitions" class="OPEN">
- <li><a href="http://www.topcoder.com/tc">Home</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_competitor_stats')">The Tops</a>
- <ul id="m_competitor_stats">
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_top_rated_competitors')">Top Ranked</a>
- <ul id="m_top_rated_competitors">
- <li><a href="http://www.topcoder.com/tc?module=AlgoRank">Algorithm</a></li>
- <li><a href="http://www.topcoder.com/tc?module=HSRank">High School</a></li>
- <li><a href="http://www.topcoder.com/longcontest/stats/?module=CoderRank">Marathon Match</a></li>
- <li><a href="http://www.topcoder.com/stat?c=top_conceptors">Conceptualization</a></li>
- <li><a href="http://www.topcoder.com/stat?c=top_specificators">Specification</a></li>
- <li><a href="http://www.topcoder.com/stat?c=top_architects">Architecture</a></li>
- <li><a href="http://www.topcoder.com/stat?c=top_designers">Design</a></li>
- <li><a href="http://www.topcoder.com/stat?c=top_developers">Development</a></li>
- <li><a href="http://www.topcoder.com/stat?c=top_assemblers">Assembly</a></li>
- <li><a href="http://www.topcoder.com/stat?c=top_testers">Application Testing</a></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_recordbook')">Record Book</a>
- <ul id="m_recordbook">
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=statistics&d2=recordbook_home">Algorithm</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=compstats&d2=comp_recordbook_home">Component</a></li>
- <li><a href="http://www.topcoder.com/longcontest/?module=Static&d1=stats&d2=recordbook_home">Marathon Match</a></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_com')">Coder of the Month</a>
- <ul id="m_com">
- <li><a href="http://www.topcoder.com/tc?module=COMHistory&achtid=5">Algorithm</a></li>
- <li><a href="http://www.topcoder.com/tc?module=COMHistory&achtid=6">Design</a></li>
- <li><a href="http://www.topcoder.com/tc?module=COMHistory&achtid=7">Development</a></li>
- </ul></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_algo_competitions')">Algorithm</a>
- <ul id="m_algo_competitions">
- <li><a href="javascript:arena();">Launch Arena</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_algo_stats')">Statistics</a>
- <ul id="m_algo_stats">
- <li><a href="http://www.topcoder.com/tc?module=MatchList">Match Archive</a></li>
- <li><a href="http://www.topcoder.com/stat?c=round_overview">Match Overviews</a></li>
- <li><a href="http://www.topcoder.com/tc?module=SrmDivisionWins">Match Winners</a></li>
- <li><a href="http://www.topcoder.com/stat?c=last_match">Match Results</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Algorithm+Problem+Set+Analysis">Match Editorials</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ProblemArchive">Problem Archive</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ColorChange&ratid=1">Recent Color Changes</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Algorithm+Data+Feeds">Data Feeds</a></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_algo_support')">Support / FAQs</a>
- <ul id="m_algo_support">
- <li><a href="http://www.topcoder.com/wiki/display/tc/How+To+Compete+in+Algorithm+Competitions">How to Compete</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Algorithm+Competition+FAQs">FAQs</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Algorithm+Competition+Rating+System">Rating System</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Write+Problems+for+TopCoder">Write Problems</a></li>
- </ul></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_conceptualization_competitions')">Software Conceptualization</a>
- <ul id="m_conceptualization_competitions">
- <li><a href="http://www.topcoder.com/wiki/display/tc/TopCoder+Conceptualization+Contests">Overview</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ActiveContests&pt=23">Active Contests</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ContestStatus&pt=23">Contest Status</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&pt=23">Review Opportunities</a></li>
- <li><a href="http://software.topcoder.com/review">Submit & Review</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/TopCoder+UML+Tool">UML Tool</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_conceptualization_stats')">Statistics</a>
- <ul id="m_conceptualization_stats">
- <li><a href="http://www.topcoder.com/tc?module=CompList&ph=134">Past Contests</a></li>
- </ul></li>
- <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&pt=23">Meet the Review Board</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_conceptualization_support')">Support / FAQs</a>
- <ul id="m_conceptualization_support">
- <li><a href="http://www.topcoder.com/wiki/display/tc/Software+Conceptualization+How-To">How to Compete</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Conceptualization+Documentation">Documentation</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Conceptualization+Submission+Instructions">Tutorial</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Conceptualization+Reliability+Bonus">Reliability Ratings</a></li>
- </ul></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_specification_competitions')">Software Specification</a>
- <ul id="m_specification_competitions">
- <li><a href="http://www.topcoder.com/wiki/display/tc/TopCoder+Specification+Contests">Overview</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ActiveContests&pt=6">Active Contests</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ContestStatus&pt=6">Contest Status</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&pt=6">Review Opportunities</a></li>
- <li><a href="http://software.topcoder.com/review">Submit & Review</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/TopCoder+UML+Tool">UML Tool</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&pt=6">Meet the Review Board</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_specification_stats')">Statistics</a>
- <ul id="m_specification_stats">
- <li><a href="http://www.topcoder.com/tc?module=CompList&ph=117">Past Contests</a></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_specification_support')">Support / FAQs</a>
- <ul id="m_specification_support">
- <li><a href="http://www.topcoder.com/wiki/display/tc/Software+Specification+How+To">How to Compete</a></li>
- </ul></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_architecture_competitions')">Software Architecture</a>
- <ul id="m_architecture_competitions">
- <li><a href="http://www.topcoder.com/wiki/display/tc/Architecture+Overview">Overview</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ActiveContests&pt=7">Active Contests</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ContestStatus&pt=7">Contest Status</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&pt=7">Review Opportunities</a></li>
- <li><a href="http://software.topcoder.com/review">Submit & Review</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/TopCoder+UML+Tool">UML Tool</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&pt=7">Meet the Review Board</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_architecture_stats')">Statistics</a>
- <ul id="m_architecture_stats">
- <li><a href="http://www.topcoder.com/tc?module=CompList&ph=118">Past Contests</a></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_architecture_support')">Support / FAQs</a>
- <ul id="m_architecture_support">
- <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+Architecture+Competitions">How to Compete</a></li>
- </ul></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_des_competitions')">Software Design</a>
- <ul id="m_des_competitions">
- <li><a href="http://www.topcoder.com/tc?module=ViewActiveContests&ph=112">Active Contests</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ContestStatus&pt=1">Contest Status</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&pt=1">Review Opportunities</a></li>
- <li><a href="http://software.topcoder.com/review">Submit & Review</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/TopCoder+UML+Tool">UML Tool</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_des_stats')">Statistics</a>
- <ul id="m_des_stats">
- <li><a href="http://www.topcoder.com/tc?module=CompList&ph=112">Past Contests</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ColorChange&ph=112">Recent Color Changes</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Design+Data+Feeds">Data Feeds</a></li>
- </ul></li>
- <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&pt=1">Meet the Review Board</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_des_support')">Support / FAQs</a>
- <ul id="m_des_support">
- <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+Component+Design+Competitions">How to Compete</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Design+Documentation">Documentation</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Design+Ratings">Ratings</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Design+Reliability+Ratings">Reliability Ratings</a></li>
- </ul></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_dev_competitions')">Software Development</a>
- <ul id="m_dev_competitions">
- <li><a href="http://www.topcoder.com/tc?module=ViewActiveContests&ph=113">Active Contests</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ContestStatus&pt=2">Contest Status</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&pt=2">Review Opportunities</a></li>
- <li><a href="http://software.topcoder.com/review">Submit & Review</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/TopCoder+UML+Tool">UML Tool</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_dev_stats')">Statistics</a>
- <ul id="m_dev_stats">
- <li><a href="http://www.topcoder.com/tc?module=CompList&ph=113">Past Contests</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ColorChange&ph=113">Recent Color Changes</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Development+Data+Feeds">Data Feeds</a></li>
- </ul></li>
- <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&pt=2">Meet the Review Board</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_dev_support')">Support / FAQs</a>
- <ul id="m_dev_support">
- <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+Component+Development+Competitions">How to Compete</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Development+Documentation">Documentation</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Development+Ratings">Ratings</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Component+Development+Reliability+Ratings">Reliability Ratings</a></li>
- </ul></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_assembly_competitions')">Software Assembly</a>
- <ul id="m_assembly_competitions">
- <li><a href="http://www.topcoder.com/wiki/display/tc/Assembly">Overview</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ViewAssemblyActiveContests">Active Contests</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ContestStatus&pt=14">Contest Status</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&pt=14">Review Opportunities</a></li>
- <li><a href="http://software.topcoder.com/review">Submit & Review</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&pt=14">Meet the Review Board</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_assembly_stats')">Statistics</a>
- <ul id="m_assembly_stats">
- <li><a href="http://www.topcoder.com/tc?module=CompList&ph=125">Past Contests</a></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_assembly_support')">Support / FAQs</a>
- <ul id="m_assembly_support">
- <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+Assembly+Competitions">How to Compete</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorial">Tutorial</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Assembly+Competition+Documentation">Documentation</a></li>
- </ul></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_testing_competitions')">Application Testing</a>
- <ul id="m_testing_competitions">
- <li><a href="http://www.topcoder.com/wiki/display/tc/Testing">Overview</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ActiveContests&pt=13">Active Contests</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ContestStatus&pt=13">Contest Status</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&pt=13">Review Opportunities</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&pt=13">Meet the Review Board</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_testing_stats')">Statistics</a>
- <ul id="m_testing_stats">
- <li><a href="http://www.topcoder.com/tc?module=CompList&ph=124">Past Contests</a></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_testing_support')">Support / FAQs</a>
- <ul id="m_testing_support">
- <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+Testing+Competitions">How to Compete</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Testing+Competition+Tutorial">Tutorial</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Testing+Competition+Documentation">Documentation</a></li>
- </ul></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_ui_prototype_competitions')">UI Prototype</a>
- <ul id="m_ui_prototype_competitions">
- <li><a href="http://www.topcoder.com/wiki/display/tc/UI+Prototype+Competitions">Overview</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ActiveContests&pt=19">Active Contests</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ContestStatus&pt=19">Contest Status</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&pt=19">Review Opportunities</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&pt=19">Meet the Review Board</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_ui_prototype_stats')">Statistics</a>
- <ul id="m_ui_prototype_stats">
- <li><a href="http://www.topcoder.com/tc?module=CompList&pt=19">Past Contests</a></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_ui_prototype_support')">Support / FAQs</a>
- <ul id="m_ui_prototype_support">
- <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+IU+Prototype+Competitions">How to Compete</a></li>
- </ul></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_ria_build_competitions')">RIA Build</a>
- <ul id="m_ria_build_competitions">
- <li><a href="http://www.topcoder.com/wiki/display/tc/RIA+Build+Competitions">Overview</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ActiveContests&pt=24">Active Contests</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ContestStatus&pt=24">Contest Status</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ViewReviewProjects&pt=24">Review Opportunities</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ReviewBoard&pt=24">Meet the Review Board</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_ria_build_stats')">Statistics</a>
- <ul id="m_ria_build_stats">
- <li><a href="http://www.topcoder.com/tc?module=CompList&pt=24">Past Contests</a></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_ria_build_support')">Support / FAQs</a>
- <ul id="m_ria_build_support">
- <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+RIA+Builds">How to Compete</a></li>
- </ul></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_bugraces_competitions')">Bug Races</a>
- <ul id="m_bugraces_competitions">
- <li><a href="http://www.topcoder.com/wiki/display/tc/Bug+Races">Overview</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Active+Bug+Races">Active Contests</a></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/Bug+Races+Reviews">Review Opportunities</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_bugraces_support')">Support / FAQs</a>
- <ul id="m_bugraces_support">
- <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Compete+in+Bug+Races">How to Compete</a></li>
- </ul></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_hs_competitions')">High School</a>
- <ul id="m_hs_competitions">
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=hs&d2=home">Overview</a></li>
- <li><a href="javascript:arena();">Launch Arena</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_hs_stats')">Statistics</a>
- <ul id="m_hs_stats">
- <li><a href="http://www.topcoder.com/tc?module=HSRoundOverview">Match Overview</a></li>
- <li><a href="http://www.topcoder.com/tc?module=HSRoundStatsTeam">Match Results (Team)</a></li>
- <li><a href="http://www.topcoder.com/tc?module=HSRoundStatsInd">Match Results (Indiv.)</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=hs&d2=match_editorials&d3=archive">Match Editorials</a></li>
- <li><a href="http://www.topcoder.com/tc?module=ColorChange&ratid=2">Recent Color Changes</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=hs&d2=support&d3=dataFeed">Data Feeds</a></li>
- </ul></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=hs&d2=sponsorship">Sponsorship</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_hs_support')">Support / FAQs</a>
- <ul id="m_hs_support">
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=hs&d2=support&d3=index">How to Compete</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=hs&d2=support&d3=faqIndex">FAQs</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=hs&d2=support&d3=sampleProblems">Sample Problems</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=hs&d2=support&d3=ratings">Rating System</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=help&d2=problemWriter&node=hs_write">Write Problems</a></li>
- </ul></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_long_contests')">Marathon Matches</a>
- <ul id="m_long_contests">
- <li><a href="http://www.topcoder.com/longcontest/?module=ViewActiveContests">Active Contests</a></li>
- <li><a href="http://www.topcoder.com/longcontest/?module=ViewPractice">Practice</a></li>
- <li><a href="http://www.topcoder.com/longcontest/?module=ViewQueue">Queue Status</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_long_stats')">Statistics</a>
- <ul id="m_long_stats">
- <li><a href="http://www.topcoder.com/longcontest/stats/?module=MatchList">Match Archive</a></li>
- <li><a href="http://www.topcoder.com/longcontest/stats/?module=ViewOverview">Match Overview</a></li>
- <li><a href="http://www.topcoder.com/longcontest/stats/?module=MatchWinners">Match Winners</a></li>
- <li><a href="http://www.topcoder.com/longcontest/?module=Static&d1=match_editorials&d2=archive">Match Editorials</a></li>
- <li><a href="http://www.topcoder.com/longcontest/?module=Static&d1=support&d2=dataFeed">Data Feeds</a></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_long_support')">Support / FAQs</a>
- <ul id="m_long_support">
- <li><a href="http://www.topcoder.com/longcontest/?module=Static&d1=instructions">How to Compete</a></li>
- <li><a href="http://www.topcoder.com/longcontest/?module=Static&d1=support&d2=ratings">Rating System</a></li>
- </ul></li>
- </ul></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_tournaments')">Tournaments</a>
- <ul id="m_tournaments">
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=tournaments&d2=home">TopCoder</a></li>
- <li><a href="http://www.topcoder.com/pl/">Powered by TopCoder</a></li>
- <li><a href="http://www.topcoder.com/tc?module=CRPFStatic&d1=crpf&d2=crpf_overview">Charity</a></li>
- </ul></li>
- <li><a href="http://www.topcoder.com/dr">The Digital Run</a></li>
- <li class="exp_ed"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_edu_content')">Educational Content</a>
- <ul id="m_edu_content" class="OPEN">
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=education&d2=overview">Overview</a></li>
- <li class="highlight"><a href="http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=alg_index">Algorithm Tutorials</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=comp_index">Component Tutorials</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=mm_index">Marathon Tutorials</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=features&d2=archive">Features</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=help&d2=writeForTC">Write for TopCoder</a></li>
- </ul></li>
- <li><a href="http://www.topcoder.com/wiki/display/tc/How+to+Get+Paid+for+Competing">How to Get Paid</a></li>
- </ul></li>
- <li><a href="http://forums.topcoder.com/">Forums</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=calendar&d2=thisMonth">Event Calendar</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=pressroom&d2=index">Press Room</a></li>
- <li><a href="http://www.topcoder.com/tc?&module=SurveyList">Surveys</a></li>
- <li><a href="http://www.topcoder.com/tc?module=MyHome">My TopCoder</a></li>
- <li class="exp"><a href="javascript:void(0)" onclick="Javascript:toggleMenu(this.parentNode,'m_about_tc')">About TopCoder</a>
- <ul id="m_about_tc">
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=about&d2=index">Overview</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=about&d2=contactus">Contact Us</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=about&d2=whyjoin">Why Join TopCoder?</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=about&d2=jobs">Working at TopCoder</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=about&d2=management">Management Team</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=about&d2=terms">Terms, Revisions</a></li>
- <li><a href="http://www.topcoder.com/tc?module=Static&d1=about&d2=privacy">Privacy Policy</a></li>
- </ul></li></ul>
- <div style="padding: 10px 0px 0px 17px; float: left;">
-
-
-
-
- <a href="http://www.topcoder.com/tc?module=LinkTracking&link=http://software.topcoder.com/&refer=leftnav"><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/tc_direct.png" alt="TopCoder Direct"></a>
-
- </div>
-
- <div id="navbarSearch">
- <b>Member Search:</b>
- <form action="http://www.topcoder.com/tc" method="get" name="simpleSearchForm" class="noSpace" id="simpleSearchForm">
- <input class="noSpace" name="module" value="SimpleSearch" type="hidden">
- <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">
- <a class="gMetal" href="javascript:void%20document.simpleSearchForm.submit();">Go</a><br>
- <a class="gMetal" href="http://www.topcoder.com/tc?module=ViewAdvanced">Advanced Search</a>
- </form>
- </div>
- </div>
- <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>
- <div style="margin: 0px; float: left; clear: left; width: 170px;" align="center">
- <img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/brackets.png" alt="" style="margin-bottom: 23px;">
- </div>
- </td>
- <!-- Left Column Ends -->
- <!-- Center Column Begins -->
- <td align="center" width="100%"><div class="tutorBodyFull">
-
- <table class="pageTitleTable" cellpadding="0" cellspacing="0">
- <tbody><tr>
- <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>
- <td class="pageSubtitle" align="right"> </td>
- </tr>
- </tbody></table>
- <div class="linkBox"> <a href="http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=alg_index">Archive</a><br>
- <span class="invisible" id="printableLink"><a href="javascript:makeInvisible();">Printable view</a><br>
- </span> <span id="navigableLink" class=""><a href="javascript:makeNavigable();">Normal view</a><br>
- </span>
- <a href="http://forums.topcoder.com/?module=ThreadList&forumID=514543">Discuss this article</a><br>
- <a href="http://www.topcoder.com/tc?module=Static&d1=help&d2=writeForTC">Write for TopCoder</a>
- </div>
- <span class="bigTitle">Prime Numbers, Factorization and Euler Function</span> <br>
- <br>
- <div class="authorPhoto"> <img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/medv_big.jpg" alt="Author"> </div>
- <div class="authorText"> By
- <a href="http://www.topcoder.com/tc?module=MemberProfile&cr=269207&tab=alg" class="coderTextBlue">medv</a>
- <br>
- <em>TopCoder Member</em> </div>
- <br clear="all">
- <p><i>In addition to being a TopCoder member,
- <a href="http://www.topcoder.com/tc?module=MemberProfile&cr=269207&tab=alg" class="coderTextBlue">medv</a>
- is a lecturer in Kiev National University's cybernetics faculty.</i></p>
- <p>Prime
- numbers and their properties were extensively studied by the ancient
- Greek mathematicians. Thousands of years later, we commonly use the
- different properties of integers that they discovered to solve
- problems. In this article we’ll review some definitions, well-known
- theorems, and number properties, and look at some problems associated
- with them.</p>
- <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>
- <p><strong> The fundamental theorem of arithmetic:</strong><br>
- Any positive integer can be divided in primes in essentially only one
- way. The phrase 'essentially one way' means that we do not consider the
- order of the factors important. </p>
- <p>One
- is neither a prime nor composite number. One is not composite because
- it doesn’t have two distinct divisors. If one is prime, then number 6,
- for example, has two different representations as a product of prime
- numbers: 6 = 2 * 3 and 6 = 1 * 2 * 3. This would contradict the
- fundamental theorem of arithmetic. </p>
- <p><strong>Euclid’s theorem:</strong><br>
- There is no largest prime number. </p>
- <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>, …, <em>p<sub>n</sub></em>. But no prime <em>p<sub>i</sub></em> divides the number </p>
- <p>N = <em>p</em><sub>1</sub> * <em>p</em><sub>2</sub> * … * <em>p<sub>n</sub></em> + 1, </p>
- <p>so N cannot be composite. This contradicts the fact that the set of primes is finite. </p>
- <p><strong>Exercise 1.</strong> Sequence <em>a<sub>n</sub></em> is defined recursively: </p>
- <p><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/prime-eq1.jpg" alt=""></p>
- <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>
- <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>…<em>a</em><sub><em>n</em></sub> + 1 and use Euclid’s theorem. </p>
- <p><strong>Exercise 2.</strong> Ferma numbers F<sub><em>n</em></sub> (<em>n</em> ≥ 0) are positive integers of the form </p>
- <p><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/prime-eq2.jpg" alt=""></p>
- <p>Prove that F<em><sub>i</sub></em> and F<em><sub>j</sub></em>, <em>i</em> ≠ <em>j</em> are relatively prime. </p>
- <p> Hint: Prove that F<sub><em>n</em> +1</sub> = F<sub>0</sub>F<sub>1</sub>F<sub>2</sub>…F<sub><em>n</em></sub> + 2 and use Euclid’s theorem.</p>
- <p><strong>Dirichlet’s theorem about arithmetic progressions:</strong><br>
- 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> > 0. </p>
- <p><strong> Trial division: <br>
- </strong>
- Trial division is the simplest of all factorization techniques. It
- 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>
- <pre> void factor(int n)
- {
- int i;
- for(i=2;i<=(int)sqrt(n);i++)
- {
- while(n % i == 0)
- {
- printf("%d ",i);
- n /= i;
- }
- }
- if (n > 1) printf("%d",n);
- printf("\n");
- }
- </pre>
- <p> Consider a problem that asks you to find the factorization of integer <em>g</em>(-2<sup>31</sup> < <em>g</em> <2<sup>31</sup>) in the form </p>
- <p><em>g</em> = <em>f</em><sub>1</sub> x <em>f</em><sub>2</sub> x … 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 … x <em>f</em><sub>n</sub></p>
- <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> ≤ <em>f</em><sub><em>j</em></sub> for <em>i</em> < <em>j</em>. </p>
- <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>
- <p> To solve the problem, it is enough to use trial division as shown in function <em>factor</em>. </p>
- <p><strong>Sieve of Eratosthenes:</strong><br>
- The most efficient way to find all small primes was proposed by the
- Greek mathematician Eratosthenes. His idea was to make a list of
- 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>
- <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>
- <p><img src="Prime%20Numbers,%20Factorization%20and%20Euler%20Function%20_files/prime-eq3.jpg" alt=""></p>
- <p>At the beginning we mark all numbers as prime. Then for each prime number <em>i</em> (<em>i</em> ≥ 2), not greater than √MAX, we mark all numbers <em>i</em>*<em>i</em>, <em>i</em>*(<em>i</em> + 1), … as composite. </p>
- <pre> void gen_primes()
- {
- int i,j;
- for(i=0;i<MAX;i++) primes[i] = 1;
- for(i=2;i<=(int)sqrt(MAX);i++)
- if (primes[i])
- for(j=i;j*i<MAX;j++) primes[i*j] = 0;
- }
- </pre>
- <p> For example, if MAX = 16, then after calling <em>gen_primes</em>, the array ‘primes’ will contain next values: </p>
- <table class="stat" style="width: 100%;" cellpadding="0" cellspacing="0">
- <tbody><tr nowrap="nowrap">
- <td class="valueC"><em>i</em></td>
- <td class="valueC"> 0 </td>
- <td class="valueC"> 1 </td>
- <td class="valueC"> 2 </td>
- <td class="valueC"> 3 </td>
- <td class="valueC"> 4 </td>
- <td class="valueC"> 5 </td>
- <td class="valueC"> 6 </td>
- <td class="valueC"> 7 </td>
- <td class="valueC"> 8 </td>
- <td class="valueC"> 9 </td>
- <td class="valueC"> 10 </td>
- <td class="valueC"> 11 </td>
- <td class="valueC"> 12 </td>
- <td class="valueC"> 13 </td>
- <td class="valueC"> 14 </td>
- <td class="valueC"> 15 </td>
- </tr>
- <tr>
- <td class="valueC"> primes[<em>i</em>] </td>
- <td class="valueC"> 1 </td>
- <td class="valueC"> 1 </td>
- <td class="valueC"> 1 </td>
- <td class="valueC"> 1 </td>
- <td class="valueC"> 0 </td>
- <td class="valueC"> 1 </td>
- <td class="valueC"> 0 </td>
- <td class="valueC"> 1 </td>
- <td class="valueC"> 0 </td>
- <td class="valueC"> 0 </td>
- <td class="valueC"> 0 </td>
- <td class="valueC"> 1 </td>
- <td class="valueC"> 0 </td>
- <td class="valueC"> 1 </td>
- <td class="valueC"> 0 </td>
- <td class="valueC"> 0 </td>
- </tr>
- </tbody></table>
- <p><strong>Goldbach's Conjecture:</strong><br>
- For any integer <em>n</em> (<em>n</em> ≥ 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 ≤ <em>n</em> ≤ 2 15). (The word ‘essentially’ 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>≤<em> </em><em>p</em><sub>2</sub>.) </p>
- <p>For example, for <em>n</em> = 10 we have two such pairs: 10 = 5 + 5 and 10 = 3 + 7. </p>
- <p><strong><em> </em></strong>To solve this,<strong></strong>as <em>n</em> ≤ 2<sup>15</sup> = 32768, we’ll fill an array primes[32768] using function <em>gen_primes</em>. We are interested in primes, not greater than 32768. </p>
- <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> ≤ <em>p</em><sub>2</sub>, we have <em>p</em><sub>1</sub> ≤ <em>n</em>/2. So to solve the problem we need to find the number of pairs (<em>i</em>, <em>n</em> – <em>i</em>), such that <em>i</em> and <em>n</em> – <em>i</em> are prime numbers and 2 ≤ <em>i</em> ≤ <em>n</em>/2. </p>
- <pre> int FindSol(int n)
- {
- int i,res=0;
- for(i=2;i<=n/2;i++)
- if (primes[i] && primes[n-i]) res++;
- return res;
- }
- </pre>
- <p><strong> Euler’s totient function<br>
- </strong> The number of positive integers, not greater than <em>n</em>, and relatively prime with <em>n</em>, equals to Euler’s totient function φ (<em>n</em>). In symbols we can state that </p>
- <p> φ (<em>n</em>) ={<em>a</em> <font face="Symbol">Î</font> N: 1 ≤ <em>a</em> ≤ <em>n</em>, gcd(<em>a</em>, <em>n</em>) = 1} </p>
- <p>This function has the following properties: </p>
- <ol>
- <li> If <em>p</em> is prime, then φ (<em>p</em>) = <em>p</em> – 1 and φ (<i>p<sup>a</sup></i>) = <em>p</em><em> a</em> * (1 – 1/<em>p</em>) for any <em>a</em>. </li>
- <li> If <em>m</em> and <em>n</em> are coprime, then φ (<em>m</em> * <em>n</em>) = φ (<em>m</em>) * φ (<em>n</em>). </li>
- <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>
- </ol>
- <p>φ (<em>n</em>) = <em>n</em> * (1 – 1/<em>p</em> 1) * (1 – 1/<em>p</em> 2) * ... * (1 – 1/<em>p k</em>) </p>
- <p>The function fi(<em>n</em>) finds the value of φ(<em>n</em>): </p>
- <pre> int fi(int n)
- {
- int result = n;
- for(int i=2;i*i <= n;i++)
- {
- if (n % i == 0) result -= result / i;
- while (n % i == 0) n /= i;
- }
- if (n > 1) result -= result / n;
- return result;
- }
- </pre>
- <p>For example, to find φ(616) we need to factorize the argument: 616 = 2<sup>3</sup> * 7 * 11. Then, using the formula, we’ll get: </p>
- <p>φ(616) = 616 * (1 – 1/2) * (1 – 1/7) * (1 – 1/11) = 616 * 1/2 * 6/7 * 10/11 = 240. </p>
- <p>Say you've got a problem that, for a given integer <em>n</em> (0 < <em>n</em> ≤ 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>
- <p>The solution: The number of positive integers less than <em>n</em> and relatively prime to <em>n</em> equals to φ(<em>n</em>). In this problem, then, we need do nothing more than to evaluate Euler’s totient function. </p>
- <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 ≤<em> n</em> ≤ 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>
- <p>For example, if <em>n</em>
- = 4, you need to precalculate 11 values: Answer(1, 1), Answer(1, 2),
- Answer(2, 1), Answer(1, 3), Answer(2, 3), Answer(3, 2), Answer(3, 1),
- Answer(1, 4), Answer(3, 4), Answer(4, 3) and Answer(4, 1). </p>
- <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, …, <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), … , Answer(<em>i</em> + 1, <em>i</em> + 1), Answer(<em>i</em> + 1, 1), Answer(<em>i</em> + 1, 2), … , Answer(<em>i</em> + 1, <em>i</em>). </p>
- <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, …, <em>i</em> + 1}, can be found from known values if GCD(<em>j</em>, <em>i</em> + 1) > 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