<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Omnia sunt communia &#187; factors</title>
	<atom:link href="http://www.blog.amrlima.info/archives/tag/factors/feed" rel="self" type="application/rss+xml" />
	<link>http://www.blog.amrlima.info</link>
	<description>gnu/linux, cultura livre e outras divagações</description>
	<lastBuildDate>Fri, 20 Jan 2012 20:18:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Prime factors code in C and Python</title>
		<link>http://www.blog.amrlima.info/archives/865</link>
		<comments>http://www.blog.amrlima.info/archives/865#comments</comments>
		<pubDate>Thu, 14 Jan 2010 23:07:11 +0000</pubDate>
		<dc:creator>amrlima</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[factors]]></category>
		<category><![CDATA[Prime numbers]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.blog.amrlima.info/?p=865</guid>
		<description><![CDATA[Today someone spoke about prime factors and I thought it was something interesting to code. I needed to practice my C so I&#8217;ve coded it in C. Here it goes:

#include &#60;stdio.h&#62;
#define VMAX 25
&#160;
int main&#40;&#41;
&#123;
    /*Prime numbers &#60; 100 */
    int primes&#91;VMAX&#93; = &#123;2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97&#125;;
    int factors&#91;VMAX&#93; = &#123;&#125;; [...]]]></description>
			<content:encoded><![CDATA[<p>Today someone spoke about <a href="http://en.wikipedia.org/wiki/Prime_factor">prime factors</a> and I thought it was something interesting to code. I needed to practice my C so I&#8217;ve coded it in C. Here it goes:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#define VMAX 25</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #808080; font-style: italic;">/*Prime numbers &lt; 100 */</span>
    <span style="color: #993333;">int</span> primes<span style="color: #009900;">&#91;</span>VMAX<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #0000dd;">2</span><span style="color: #339933;">,</span><span style="color: #0000dd;">3</span><span style="color: #339933;">,</span><span style="color: #0000dd;">5</span><span style="color: #339933;">,</span><span style="color: #0000dd;">7</span><span style="color: #339933;">,</span><span style="color: #0000dd;">11</span><span style="color: #339933;">,</span><span style="color: #0000dd;">13</span><span style="color: #339933;">,</span><span style="color: #0000dd;">17</span><span style="color: #339933;">,</span><span style="color: #0000dd;">19</span><span style="color: #339933;">,</span><span style="color: #0000dd;">23</span><span style="color: #339933;">,</span><span style="color: #0000dd;">29</span><span style="color: #339933;">,</span><span style="color: #0000dd;">31</span><span style="color: #339933;">,</span><span style="color: #0000dd;">37</span><span style="color: #339933;">,</span><span style="color: #0000dd;">41</span><span style="color: #339933;">,</span><span style="color: #0000dd;">43</span><span style="color: #339933;">,</span><span style="color: #0000dd;">47</span><span style="color: #339933;">,</span><span style="color: #0000dd;">53</span><span style="color: #339933;">,</span><span style="color: #0000dd;">59</span><span style="color: #339933;">,</span><span style="color: #0000dd;">61</span><span style="color: #339933;">,</span><span style="color: #0000dd;">67</span><span style="color: #339933;">,</span><span style="color: #0000dd;">71</span><span style="color: #339933;">,</span><span style="color: #0000dd;">73</span><span style="color: #339933;">,</span><span style="color: #0000dd;">79</span><span style="color: #339933;">,</span><span style="color: #0000dd;">83</span><span style="color: #339933;">,</span><span style="color: #0000dd;">89</span><span style="color: #339933;">,</span><span style="color: #0000dd;">97</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    <span style="color: #993333;">int</span> factors<span style="color: #009900;">&#91;</span>VMAX<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/*Prime factors*/</span>
    <span style="color: #993333;">int</span> repeat<span style="color: #009900;">&#91;</span>VMAX<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/*Store times each factor repeats*/</span>
    <span style="color: #993333;">int</span> a<span style="color: #339933;">,</span> i<span style="color: #339933;">,</span> n<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Type a number to find it's prime factors: <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    scanf<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d&quot;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">/*Start to divide the number by prime numbers while a is not 1*/</span>
    <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>VMAX<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>a <span style="color: #339933;">!=</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span>a <span style="color: #339933;">%</span> primes<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> 
&nbsp;
            a <span style="color: #339933;">=</span> a <span style="color: #339933;">/</span> primes<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
            factors<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> primes<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/*The prime factor is the one being used*/</span>
            n<span style="color: #339933;">++;</span> <span style="color: #808080; font-style: italic;">/*Count how many times each prime is used*/</span>
            <span style="color: #009900;">&#125;</span> 
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>a <span style="color: #339933;">%</span> primes<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> n <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> 
        repeat<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> n<span style="color: #339933;">;</span>
        n <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/*Reinitialize counter*/</span>
&nbsp;
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Prime factors:<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>VMAX<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #808080; font-style: italic;">/*Print all factors in the array != 0*/</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>factors<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #808080; font-style: italic;">/*Since x ^ 0 = 1, we have to print x ^ 1 instead*/</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>repeat<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d ^ 1<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> factors<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">else</span> <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d ^ %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> factors<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> repeat<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>    
    <span style="color: #009900;">&#125;</span>       
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>I really like python but unfortunately I haven&#8217;t had the time to code anything with python. Now it&#8217;s learning C  , then C++ and so on. But this time I wanted to code this in python also. I&#8217;m a bit out of practice and my brain was thinking in C. But here it goes.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#! /usr/bin/env/python</span>
VMAX = <span style="color: #ff4500;">25</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#Prime numbers &lt; 100</span>
primes = <span style="color: black;">&#91;</span><span style="color: #ff4500;">2</span>,<span style="color: #ff4500;">3</span>,<span style="color: #ff4500;">5</span>,<span style="color: #ff4500;">7</span>,<span style="color: #ff4500;">11</span>,<span style="color: #ff4500;">13</span>,<span style="color: #ff4500;">17</span>,<span style="color: #ff4500;">19</span>,<span style="color: #ff4500;">23</span>,<span style="color: #ff4500;">29</span>,<span style="color: #ff4500;">31</span>,<span style="color: #ff4500;">37</span>,<span style="color: #ff4500;">41</span>,<span style="color: #ff4500;">43</span>,<span style="color: #ff4500;">47</span>,<span style="color: #ff4500;">53</span>,<span style="color: #ff4500;">59</span>,<span style="color: #ff4500;">61</span>,<span style="color: #ff4500;">67</span>,<span style="color: #ff4500;">71</span>,<span style="color: #ff4500;">73</span>,<span style="color: #ff4500;">79</span>,<span style="color: #ff4500;">83</span>,<span style="color: #ff4500;">89</span>,<span style="color: #ff4500;">97</span><span style="color: black;">&#93;</span>
factors = <span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">*</span>VMAX <span style="color: #808080; font-style: italic;">#Prime factors</span>
repeat = <span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">*</span>VMAX <span style="color: #808080; font-style: italic;">#Store times each factor repeats</span>
i = <span style="color: #ff4500;">0</span>
n = <span style="color: #ff4500;">0</span>
k = <span style="color: #ff4500;">0</span>
&nbsp;
a = <span style="color: #008000;">raw_input</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Type a number to find it's prime factors:&quot;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#Start to divide the number by prime numbers while a is not 1</span>
<span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>VMAX<span style="color: black;">&#41;</span>: 
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">while</span> <span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>a <span style="color: #66cc66;">!</span>= <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">&amp;</span> <span style="color: black;">&#40;</span><span style="color: #008000;">int</span> <span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span> <span style="color: #66cc66;">%</span> primes<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> == <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
&nbsp;
        a = <span style="color: #008000;">int</span> <span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span> / primes<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">print</span> primes<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>
        factors<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> = primes<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> <span style="color: #808080; font-style: italic;"># The prime factor is the one being used</span>
&nbsp;
        n = n + <span style="color: #ff4500;">1</span> <span style="color: #808080; font-style: italic;">#*Count how many times each prime is used</span>
        <span style="color: #ff7700;font-weight:bold;">print</span> n
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#40;</span><span style="color: #008000;">int</span> <span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span> <span style="color: #66cc66;">%</span> primes<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> == <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>:
        n = <span style="color: #ff4500;">0</span> <span style="color: #808080; font-style: italic;">#Reinitialize counter</span>
    repeat<span style="color: black;">&#91;</span>k<span style="color: black;">&#93;</span> = n
    n = <span style="color: #ff4500;">0</span>
    k = k + <span style="color: #ff4500;">1</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Prime factors:&quot;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#Print all factors in the array != 0</span>
<span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span>VMAX<span style="color: black;">&#41;</span>:
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#40;</span>factors<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> <span style="color: #66cc66;">!</span>=<span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>:
    <span style="color: #808080; font-style: italic;">#Since x ^ 0 = 1, we have to print x ^ 1 instead</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: black;">&#40;</span>repeat<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> == <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>:
            <span style="color: #ff7700;font-weight:bold;">print</span> factors<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>
        <span style="color: #ff7700;font-weight:bold;">else</span>: <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;%s ^ %s &quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>factors<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>, repeat<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.blog.amrlima.info/archives/865/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

