<?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>Arquivo para Matemática - Bóson Treinamentos em Ciência e Tecnologia</title>
	<atom:link href="https://www.bosontreinamentos.com.br/tag/matematica/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bosontreinamentos.com.br/tag/matematica/</link>
	<description>Artigos e Tutoriais sobre Desenvolvimento de Software, Bancos de Dados SQL, Linux, Lógica de Programação, Inteligência Artificial, Hardware, Eletrônica, Arduino, Técnicas e Teorias de Estudo e Aprendizagem, Carreira em TI, Ciências Cognitivas, e muito mais!</description>
	<lastBuildDate>Wed, 09 Jul 2025 10:47:32 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.5</generator>
	<item>
		<title>Calcular números primos com Crivo de Eratóstenes em Fortran</title>
		<link>https://www.bosontreinamentos.com.br/fortran/calcular-numeros-primos-com-crivo-de-eratostenes-em-fortran/</link>
					<comments>https://www.bosontreinamentos.com.br/fortran/calcular-numeros-primos-com-crivo-de-eratostenes-em-fortran/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 18 Mar 2025 18:13:19 +0000</pubDate>
				<category><![CDATA[Fortran]]></category>
		<category><![CDATA[Algoritmos]]></category>
		<category><![CDATA[FORTRAN]]></category>
		<category><![CDATA[Matemática]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19783</guid>

					<description><![CDATA[<p>Números primos com Crivo de Eratóstenes em Fortran Neste tutorial trago um algoritmo simples, escrito em Fortran, que permite encontrar os números primos de 1 até um valor n, informado pelo usuário durante a execução do programa, para isso usando o algoritmo clássico conhecido como Crivo de Eratóstenes. Números primos são números naturais maiores que 1 que têm apenas dois divisores: 1 e eles mesmos. Em outras palavras, são números que não podem ser divididos por nenhum outro número além de 1 e deles mesmos sem resultar em um resto. Exemplos de números primos incluem 2, 3, 5, 7 e 11. A propriedade fundamental dos números primos é que não podem ser formados multiplicando dois números inteiros diferentes entre si. A compreensão dos números primos é crucial em matemática, e sua identificação desempenha um papel fundamental em áreas como criptografia e teoria dos números. O Crivo de Eratóstenes é um algoritmo antigo e eficiente para encontrar todos os números primos até um determinado limite. Ele funciona marcando os múltiplos de cada número primo encontrado, eliminando números compostos e deixando apenas os números primos. O algoritmo realiza iterações até que todos os números até o limite desejado sejam verificados. Trata-se de [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/fortran/calcular-numeros-primos-com-crivo-de-eratostenes-em-fortran/">Calcular números primos com Crivo de Eratóstenes em Fortran</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Números primos com Crivo de Eratóstenes em Fortran</h2>
<p>Neste tutorial trago um algoritmo simples, escrito em Fortran, que permite encontrar os números primos de 1 até um valor n, informado pelo usuário durante a execução do programa, para isso usando o algoritmo clássico conhecido como <strong><em>Crivo de Eratóstenes</em></strong>.</p>
<p>Números primos são números naturais maiores que 1 que têm apenas dois divisores: 1 e eles mesmos. Em outras palavras, são números que não podem ser divididos por nenhum outro número além de 1 e deles mesmos sem resultar em um resto.</p>
<p>Exemplos de números primos incluem 2, 3, 5, 7 e 11.</p>
<p>A propriedade fundamental dos números primos é que não podem ser formados multiplicando dois números inteiros diferentes entre si. A compreensão dos números primos é crucial em matemática, e sua identificação desempenha um papel fundamental em áreas como criptografia e teoria dos números.</p>
<p>O <a href="https://www.keil.com/benchmarks/sieve.asp" target="_blank" rel="noopener">Crivo de Eratóstenes</a> é um algoritmo antigo e eficiente para encontrar todos os números primos até um determinado limite. Ele funciona marcando os múltiplos de cada número primo encontrado, eliminando números compostos e deixando apenas os números primos. O algoritmo realiza iterações até que todos os números até o limite desejado sejam verificados.</p>
<p>Trata-se de uma maneira bastante eficaz de encontrar rapidamente todos os números primos dentro de um intervalo específico.</p>
<p>De acordo com a tradição, o Crivo de Eratóstenes foi criado pelo matemático grego Eratóstenes de Cirene por volta de 240 a.C., sendo assim uma das técnicas mais antigas conhecidas para encontrar números primos.</p>
<div id="attachment_19891" style="width: 279px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-19891" class="size-full wp-image-19891" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2024/01/eratostenes-busto.png" alt="Busto de Eratóstenes" width="269" height="437" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2024/01/eratostenes-busto.png 269w, https://www.bosontreinamentos.com.br/wp-content/uploads/2024/01/eratostenes-busto-259x420.png 259w" sizes="(max-width: 269px) 100vw, 269px" /><p id="caption-attachment-19891" class="wp-caption-text">Busto de Eratóstenes</p></div>
<p>Neste tutorial vamos implementar este algoritmo usando a linguagem de programação Fortran.</p>
<h3>Funcionamento do Crivo de Eratóstenes</h3>
<p>O algoritmo do Crivo de Eratóstenes funciona da seguinte maneira:</p>
<ol>
<li>Inicialização:<br />
Começamos criando uma lista de números a partir de 2 até o valor limite desejado pelo usuário.<br />
Marcamos todos esses números como não riscados, indicando que inicialmente consideramos todos como primos.</li>
<li>Seleção do Próximo Número:<br />
Começamos com o primeiro número não riscado, que é o 2.<br />
Este número é então marcado como primo, já que é o menor número não riscado (e 2 é o primeiro número primo).</li>
<li>Eliminação dos Múltiplos:<br />
Agora vamos riscar todos os múltiplos do número primo que acabamos de encontrar, até chegar no valor limite.<br />
No caso, riscamos todos os múltiplos de 2 (4, 6, 8, 10, 12, &#8230;).</li>
<li>Seleção do Próximo Número Não Riscado:<br />
Após riscar os múltiplos do número anterior, vamos nos mover para o próximo número não riscado na lista, que é o próximo número primo.</li>
<li>Repetição:<br />
Repetimos os passos 3 e 4 até que tenhamos marcado todos os números não riscados como primos ou não primos.</li>
</ol>
<p>Ao final do processo, os números que permanecem não riscados são os números primos dentro do intervalo desejado. O Crivo de Eratóstenes é eficiente porque evita a verificação de múltiplos de números que já foram marcados como não primos, reduzindo significativamente o número de iterações necessárias.</p>
<p>Visualmente, o que o crivo de Eratóstenes equivale ao seguinte:</p>
<table class="dataframe" border="1">
<thead>
<tr style="text-align: right;">
<th> </th>
<th>0</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
<th>8</th>
<th>9</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 1</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 2</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 3</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 4</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 5</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 6</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 7</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 8</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 9</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 10</td>
</tr>
<tr>
<th>1</th>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 11</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 12</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 13</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 14</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 15</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 16</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 17</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 18</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 19</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 20</td>
</tr>
<tr>
<th>2</th>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 21</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 22</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 23</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 24</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 25</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 26</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 27</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 28</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 29</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 30</td>
</tr>
<tr>
<th>3</th>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 31</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 32</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 33</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 34</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 35</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 36</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 37</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 38</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 39</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 40</td>
</tr>
<tr>
<th>4</th>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 41</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 42</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 43</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 44</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 45</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 46</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 47</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 48</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 49</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 50</td>
</tr>
<tr>
<th>5</th>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 51</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 52</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 53</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 54</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 55</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 56</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 57</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 58</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 59</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 60</td>
</tr>
<tr>
<th>6</th>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 61</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 62</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 63</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 64</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 65</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 66</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 67</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 68</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 69</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 70</td>
</tr>
<tr>
<th>7</th>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 71</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 72</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 73</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 74</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 75</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 76</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 77</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 78</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 79</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 80</td>
</tr>
<tr>
<th>8</th>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 81</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 82</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 83</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 84</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 85</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 86</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 87</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 88</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 89</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 90</td>
</tr>
<tr>
<th>9</th>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 91</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 92</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 93</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 94</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 95</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 96</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 97</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 98</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 99</td>
<td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 100</td>
</tr>
</tbody>
</table>
<p>Podemos ver que os números primos estão destacados (check verde), ao passo que os números múltiplos, que não são primos, são descartados (x vermelho).</p>
<p>Este algoritmo é bastante empregado em matemática computacional e é uma abordagem clássica para encontrar números primos.</p>
<p>Vejamos agora como implementar esse algoritmo usando uma linguagem de programação &#8211; no caso, o Fortran.</p>
<h3>Código em Fortran</h3>
<pre>program CrivoDeEratostenes
implicit none

integer, parameter :: MAX_N = 1000000
integer :: n
logical :: e_primo(MAX_N)
integer :: i, j

<span style="color: #339966;">! Inicializar o vetor de primos como verdadeiro</span>
e_primo = .true.

<span style="color: #339966;">! Solicitar ao usuário que insira o valor de 'n'</span>
write(*,*) 'Digite um número inteiro positivo n:'
read(*,*) n

<span style="color: #339966;">! Verificar se o valor de n está dentro dos limites permitidos para números primos</span>
if (n &lt;= 1 .or. n &gt; MAX_N) then
    write(*,*) 'Valor de n fora dos limites permitidos.'
    stop
end if

<span style="color: #339966;">! Algoritmo do Crivo de Eratóstenes</span>
do i = 2, n
    if (e_primo(i)) then
        do j = 2*i, n, i
            e_primo(j) = .false.
        end do
    end if
end do

! Exibir os números primos encontrados
write(*,*) 'Números primos de 1 até', n, ':'
do i = 2, n
    if (e_primo(i)) then
        write(*,*) i
    end if
end do

end program CrivoDeEratostenes</pre>
<h3>Teste</h3>
<p>Para testar, vamos pedir ao programa para retornar todos os números primos até o valor 500.000 (quinhentos mil!):</p>
<p>Resultado (truncado):</p>
<pre><span style="color: #000000;"><strong>2</strong></span>
<span style="color: #000000;"><strong>3</strong></span>
<span style="color: #000000;"><strong>5</strong></span>
<span style="color: #000000;"><strong>7</strong></span>
<span style="color: #000000;"><strong>11</strong></span>
<span style="color: #000000;"><strong>...</strong></span>
<span style="color: #000000;"><strong>499943</strong></span>
<span style="color: #000000;"><strong>499957</strong></span>
<span style="color: #000000;"><strong>499969</strong></span>
<span style="color: #000000;"><strong>499973</strong></span>
<span style="color: #000000;"><strong>499979</strong></span></pre>
<h3>Explicação do Código</h3>
<p>E como exatamente funciona esse código? Vejamos uma explicação passo a passo:</p>
<p>1. Declaração de Variáveis &#8211; Começamos declarando algumas variáveis:</p>
<ul>
<li><strong>MAX_N</strong>: Valor máximo permitido para n (limite superior para encontrar números primos).</li>
<li><strong>n</strong>: Número que será fornecido pelo usuário.</li>
<li><strong>e_primo</strong>: Um array lógico que indica se um número <em>é primo</em> (TRUE) ou não (FALSE).</li>
<li><strong>i</strong> e <strong>j</strong>: Índices para iteração.</li>
</ul>
<p>2. Inicialização:</p>
<ul>
<li>e_primo = .TRUE.: Inicializa o vetor de primos como verdadeiro.</li>
</ul>
<p>3. Entrada do Usuário:</p>
<ul>
<li>write(*,*) &#8216;Digite um número inteiro positivo n:&#8217;: Solicita ao usuário que insira um número inteiro positivo.</li>
<li>read(*,*) n: Lê o valor inserido pelo usuário.</li>
</ul>
<p>4. Verificação do Limite:<br />
&#8211; if (n &lt;= 1 .or. n &gt; MAX_N) then: Verifica se o valor de n está dentro dos limites permitidos para números primos.<br />
&#8211; write(*,*) &#8216;Valor de n fora dos limites permitidos.&#8217;: Exibe uma mensagem de erro se o valor de n estiver fora dos limites.<br />
&#8211; stop: Encerra o programa.</p>
<p>5. Algoritmo do Crivo de Eratóstenes:<br />
&#8211; A estrutura de repetição do i = 2, n itera sobre todos os números de 2 até n.<br />
&#8211; if (e_primo(i)) then: Verifica se i é marcado como primo.<br />
&#8211; A estrutura de repetição interna do j = 2*i, n, i marca todos os múltiplos de i como não primos, já que eles são divisíveis por i.</p>
<p>6. Saída dos Números Primos Encontrados:<br />
&#8211; write(*,*) &#8216;Números primos de 1 até&#8217;, n, &#8216;:&#8217;: Exibe uma mensagem indicando que os números primos estão sendo mostrados.<br />
&#8211; A segunda estrutura de repetição do i = 2, n itera sobre todos os números de 2 até n.<br />
&#8211; if (e_primo(i)) then: Verifica se i é marcado como primo.<br />
&#8211; write(*,*) i: Exibe o número primo.</p>
<h3>Conclusão</h3>
<p>Neste artigo vimos como empregar a técnica do Crivo de Eratóstenes para determinar números primos na linguagem de programação Fortran. Esse mesmo código pode ser adaptado para outras linguagens, como Python, C++, C# ou Rust, de acordo com sua necessidade.</p>
<h3>Colabore com a Bóson Treinamentos</h3>
<p>Ajude o canal adquirindo meus cursos na Udemy:</p>
<ul>
<li>Bancos de Dados com MySQL Básico: <a href="https://bit.ly/35QdWE4" target="_blank" rel="noopener">https://bit.ly/35QdWE4</a></li>
<li>Lógica de Programação com Português Estruturado: <a href="https://bit.ly/3QKPn22" target="_blank" rel="noopener">https://bit.ly/3QKPn22</a></li>
<li>Programação em Python do Zero: <a href="https://bit.ly/python-boson" target="_blank" rel="noopener">https://bit.ly/python-boson</a></li>
</ul>
<p>Adquira também livros e outros itens na loja da Bóson Treinamentos na Amazon e ajude o canal a se manter e crescer: <a href="https://www.amazon.com.br/shop/bosontreinamentos" target="_blank" rel="noopener">https://www.amazon.com.br/shop/bosontreinamentos</a></p>
<p>O post <a href="https://www.bosontreinamentos.com.br/fortran/calcular-numeros-primos-com-crivo-de-eratostenes-em-fortran/">Calcular números primos com Crivo de Eratóstenes em Fortran</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/fortran/calcular-numeros-primos-com-crivo-de-eratostenes-em-fortran/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como gerar números primos em JavaScript</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-javascript/como-gerar-numeros-primos-em-javascript/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-javascript/como-gerar-numeros-primos-em-javascript/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Thu, 12 Sep 2024 13:36:31 +0000</pubDate>
				<category><![CDATA[Programação em JavaScript]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Matemática]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.bosontreinamentos.com.br/?p=20278</guid>

					<description><![CDATA[<p>Gerar números primos em JavaScript Neste tutorial vou mostrar como criar um script relativamente simples em JavaScript que permite aos usuários gerarem uma lista com números primos, iniciando em 2 (que é o primeiro número primo) até um valor informado pelo usuário, que será o limite da lista gerada. Um número é considerado primo se ele for maior que um e divisível (no caso, divisão inteira) apenas por si próprio e por 1. Por exemplo: O número 23 é um número primo, pois ele só é divisível por 23 (ele próprio) e por 1. Já o número 24 não é primo, pois além de ser divisível por si mesmo e por 1, ele também é divisível por outros números, como 2, 3, 4 e 6. O número 1 não é considerado um número primo na matemática. Script que gera números primos em JavaScript O nosso script deverá realizar as seguintes tarefas: Calcular e mostrar na tela os números primos de 2 até um valor fornecido pelo usuário, usando JavaScript O numero fornecido pelo usuário será digitado em uma caixa de texto em uma página HTML Os números gerados serão exibidos no corpo do documento, um por linha. A geração dos [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-javascript/como-gerar-numeros-primos-em-javascript/">Como gerar números primos em JavaScript</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Gerar números primos em JavaScript</h1>
<p>Neste tutorial vou mostrar como criar um script relativamente simples em <a href="https://www.bosontreinamentos.com.br/category/programacao-em-javascript/">JavaScript</a> que permite aos usuários gerarem uma lista com números primos, iniciando em 2 (que é o primeiro número primo) até um valor informado pelo usuário, que será o limite da lista gerada.</p>
<p>Um número é considerado primo se ele for maior que um e divisível (no caso, divisão inteira) apenas por si próprio e por 1. Por exemplo:</p>
<ul>
<li>O número 23 é um número primo, pois ele só é divisível por 23 (ele próprio) e por 1.</li>
<li>Já o número 24 não é primo, pois além de ser divisível por si mesmo e por 1, ele também é divisível por outros números, como 2, 3, 4 e 6.</li>
</ul>
<p>O número 1 não é considerado um número primo na matemática.</p>
<h2>Script que gera números primos em JavaScript</h2>
<p>O nosso script deverá realizar as seguintes tarefas:</p>
<ol>
<li>Calcular e mostrar na tela os números primos de 2 até um valor fornecido pelo usuário, usando JavaScript</li>
<li>O numero fornecido pelo usuário será digitado em uma caixa de texto em uma página HTML</li>
<li>Os números gerados serão exibidos no corpo do documento, um por linha.</li>
<li>A geração dos valores se dará após o usuário clicar em um botão btnGeraPrimos.</li>
<li>O código JavaScript será declarado no cabeçalho da página HTML, para melhor organização do código, e invocado no botão.</li>
<li>Adicionar validação: se o usuário fornecer um número negativo, avisar que não é possível gerar a sequência de primos.</li>
<li>Mais validação: se o usuário informar um caractere que não seja um número, será avisado de que não é possível gerar a sequência de primos.</li>
</ol>
<p>Também iremos estilizar o formulário e a saída gerada usando CSS, em um arquivo separado de folha de estilos, que chamaremos de <em><strong>estilos.css</strong></em>.</p>
<p>Vamos à codificação.</p>
<h2>Códigos em HTML, CSS e JavaScript</h2>
<p><strong>1. Página HTML com JavaScript: arquivo <em>index.html</em></strong></p>
<div>
<pre><strong>&lt;!DOCTYPE html&gt;</strong>
<strong>&lt;html lang="pt-BR"&gt;</strong>
<strong>&lt;head&gt;</strong>
<strong>    &lt;meta charset="UTF-8"&gt;</strong>
<strong>    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;</strong>
<strong>    &lt;title&gt;Gerador de Números Primos&lt;/title&gt;</strong>
<strong>    &lt;link rel="stylesheet" href="estilos.css"&gt;</strong>
<strong>    &lt;script&gt;</strong>
<strong>        <span style="color: #339966;">// Função para verificar se um número é primo</span></strong>
<strong>        function ePrimo(num) {</strong>
<strong>            if (num &lt; 2) return false;</strong>
<strong>            for (let i = 2; i &lt;= Math.sqrt(num); i++) {</strong>
<strong>                if (num % i === 0) return false;</strong>
<strong>            }</strong>
<strong>            return true;</strong>
<strong>        }

</strong><strong>        <span style="color: #339966;">// Função para gerar e exibir os números primos</span></strong>
<strong>        function gerarPrimos() {</strong>
<strong>            // Limpa as mensagens e a saída anterior</strong>
<strong>            document.getElementById('mensagemErro').innerHTML = '';</strong>
<strong>            document.getElementById('saida').innerHTML = '';</strong>
<strong>            // Obter o valor inserido pelo usuário</strong>
<strong>            let valor = document.getElementById('inputNumero').value;</strong>
<strong>            // Verificar se o valor é um número válido</strong>
<strong>            if (isNaN(valor) || valor.trim() === '') {</strong>
<strong>                document.getElementById('mensagemErro').innerHTML = 'Por favor, insira um número válido.';</strong>
<strong>                return;</strong>
<strong>            }</strong>
<strong>            valor = parseInt(valor);

</strong><strong>            <span style="color: #339966;">// Validação de número negativo</span></strong>
<strong>            if (valor &lt; 2) {</strong>
<strong>                document.getElementById('mensagemErro').innerHTML = 'Por favor, insira um número maior que 1 para gerar números primos.';</strong>
<strong>                return;</strong>
<strong>            }</strong>
<strong>            let primos = [];</strong>
<strong>            // Calcular os números primos</strong>
<strong>            for (let i = 2; i &lt;= valor; i++) {</strong>
<strong>                if (ePrimo(i)) {</strong>
<strong>                    primos.push(i);</strong>
<strong>                }</strong>
<strong>            }

</strong><strong>            <span style="color: #339966;">// Exibir os números primos</span></strong>
<strong>            const saida = document.getElementById('saida');</strong>
<strong>            if (primos.length &gt; 0) {</strong>
<strong>                primos.forEach(function(primo) {</strong>
<strong>                    saida.innerHTML += primo + '&lt;br&gt;';</strong>
<strong>                });</strong>
<strong>            } else {</strong>
<strong>                saida.innerHTML = 'Nenhum número primo encontrado.';</strong>
<strong>            }</strong>
<strong>        }</strong>
<strong>    &lt;/script&gt;</strong>
<strong>&lt;/head&gt;

</strong><strong>&lt;body&gt;</strong>
<strong>&lt;div class="container"&gt;</strong>
<strong>    &lt;h1&gt;Gerador de Primos&lt;/h1&gt;</strong>
<strong>    &lt;label for="inputNumero"&gt;Digite um número:&lt;/label&gt;</strong>
<strong>    &lt;input type="text" id="inputNumero" placeholder="Ex: 50"&gt;</strong>
<strong>    &lt;div class="error" id="mensagemErro"&gt;&lt;/div&gt;</strong>
<strong>    &lt;button id="btnGeraPrimos" onclick="gerarPrimos()"&gt;Gerar Primos&lt;/button&gt;</strong>
<strong>    &lt;div class="output" id="saida"&gt;&lt;/div&gt;</strong>
<strong>&lt;/div&gt;</strong>
<strong>&lt;/body&gt;</strong>
<strong>&lt;/html&gt;</strong></pre>
</div>
<p><strong>2. Folha de estilos externa: arquivo estilos.css</strong></p>
<div>
<pre><strong>body {</strong>
<strong>    font-family: Arial, sans-serif;</strong>
<strong>    background-color: #f4f4f4;</strong>
<strong>    margin: 0;</strong>
<strong>    padding: 0;</strong>
<strong>    display: flex;</strong>
<strong>    justify-content: center;</strong>
<strong>    align-items: center;</strong>
<strong>    height: 100vh;</strong>
<strong>}</strong>
<strong>.container {</strong>
<strong>    background-color: white;</strong>
<strong>    padding: 20px;</strong>
<strong>    border-radius: 10px;</strong>
<strong>    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);</strong>
<strong>    max-width: 400px;</strong>
<strong>    width: 100%;</strong>
<strong>}</strong>
<strong>h1 {</strong>
<strong>    text-align: center;</strong>
<strong>    color: #333;</strong>
<strong>}</strong>
<strong>label {</strong>
<strong>    font-size: 16px;</strong>
<strong>    margin-bottom: 10px;</strong>
<strong>    display: block;</strong>
<strong>}</strong>
<strong>input[type="text"] {</strong>
<strong>    width: 100%;</strong>
<strong>    padding: 10px;</strong>
<strong>    margin-bottom: 10px;</strong>
<strong>    border: 1px solid #ccc;</strong>
<strong>    border-radius: 5px;</strong>
<strong>    font-size: 16px;</strong>
<strong>}</strong>
<strong>.error {</strong>
<strong>    color: red;</strong>
<strong>    font-size: 14px;</strong>
<strong>    margin-bottom: 10px;</strong>
<strong>}</strong>
<strong>.success {</strong>
<strong>    color: green;</strong>
<strong>}</strong>
<strong>button {</strong>
<strong>    width: 100%;</strong>
<strong>    padding: 10px;</strong>
<strong>    background-color: #4CAF50;</strong>
<strong>    color: white;</strong>
<strong>    border: none;</strong>
<strong>    border-radius: 5px;</strong>
<strong>    font-size: 16px;</strong>
<strong>    cursor: pointer;</strong>
<strong>}</strong>
<strong>button:hover {</strong>
<strong>    background-color: #45a049;</strong>
<strong>}</strong>
<strong>.output {</strong>
<strong>    margin-top: 20px;</strong>
<strong>    background-color: #f9f9f9;</strong>
<strong>    padding: 10px;</strong>
<strong>    border-radius: 5px;</strong>
<strong>    height: 200px;</strong>
<strong>    overflow-y: auto;</strong>
<strong>    border: 1px solid #ccc;</strong>
<strong>}</strong></pre>
</div>
<h4>Teste da aplicação</h4>
<p>Vamos abrir a página e pedir para que sejam gerados os números primos até 33:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-20280 size-full" title="Gerador de Números Primos em JavaScript" src="https://www.bosontreinamentos.com.br/wp-content/uploads/2024/09/gerador-primos-javascript.jpg" alt="Gerador de Números Primos em JavaScript" width="456" height="503" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2024/09/gerador-primos-javascript.jpg 456w, https://www.bosontreinamentos.com.br/wp-content/uploads/2024/09/gerador-primos-javascript-381x420.jpg 381w" sizes="auto, (max-width: 456px) 100vw, 456px" /></p>
<p>Caso o usuário tente gerar a sequência fornecendo um número negativo ou um caractere não-numérico, será exibida a mensagem de erro e a sequência de números primos não será gerada:</p>
<div id="attachment_20281" style="width: 462px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-20281" class="wp-image-20281 size-full" title="Como gerar números primos com JavaScript" src="https://www.bosontreinamentos.com.br/wp-content/uploads/2024/09/gerador-primos-javascript-erro.jpg" alt="Como gerar números primos com JavaScript" width="452" height="538" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2024/09/gerador-primos-javascript-erro.jpg 452w, https://www.bosontreinamentos.com.br/wp-content/uploads/2024/09/gerador-primos-javascript-erro-353x420.jpg 353w" sizes="auto, (max-width: 452px) 100vw, 452px" /><p id="caption-attachment-20281" class="wp-caption-text">Foi fornecido o número -5 (negativo), por isso a mensagem de erro.</p></div>
<h3>Funcionamento do Código</h3>
<p><strong>HTML:</strong> O formulário possui um campo de entrada (input) no qual o usuário digita um número, e um botão para invocar a função JavaScript que gera os números primos. Há uma área para exibir os erros de validação logo abaixo e uma área de saída para exibir os números primos.</p>
<p><strong>CSS:</strong> A página está estilizada para ter uma aparência limpa e amigável, como é sempre recomendável. Centralizamos o formulário na página e os elementos como caixas de texto e botões têm um design agradável, com cor de fundo verde para o botão e texto de mensagem de erro em vermelho &#8211; mas você pode alterar isso à vontade, evidentemente.</p>
<p>A saída dos números primos será em uma área de rolagem (output), que facilita a visualização dos números, caso sejam gerados muitos.</p>
<p><strong>JavaScript</strong>: O código JavaScript foi inserido no cabeçalho da página, e consiste em duas funções com tarefas específicas:</p>
<ul>
<li>ePrimo: Função que verifica se um número é primo. Ela percorre os divisores do número até sua raiz quadrada.</li>
<li>gerarPrimos: Função principal que é chamada ao clicar no botão. Ela valida a entrada do usuário, calcula os números primos até o valor fornecido, e os exibe no corpo da página.</li>
</ul>
<p>Também são realizadas validações: Se o valor fornecido não for um número, ou se for um número negativo, uma mensagem de erro é exibida.</p>
<h3>Conclusão</h3>
<p>Neste post mostrei um script simples para gerar uma listagem de números primos, que você pode &#8211; e deve &#8211; usar para estudar a linguagem e se aprofundar nas suas técnicas de programação.</p>
<p>Nos próximos artigos veremos scripts para resolver diversos outros problemas, sempre com esse foco: o aprendizado da linguagem JavaScript.</p>
<p>Até!</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-javascript/como-gerar-numeros-primos-em-javascript/">Como gerar números primos em JavaScript</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-javascript/como-gerar-numeros-primos-em-javascript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>5 Funções de Arredondamento de Valores com NumPy em Python</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-python/5-funcoes-de-arredondamento-de-valores-com-numpy-em-python/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-python/5-funcoes-de-arredondamento-de-valores-com-numpy-em-python/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Wed, 17 Jan 2024 17:26:47 +0000</pubDate>
				<category><![CDATA[Programação em Python]]></category>
		<category><![CDATA[Computação Numérica]]></category>
		<category><![CDATA[Matemática]]></category>
		<category><![CDATA[NumPy]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19875</guid>

					<description><![CDATA[<p>5 Funções de Arredondamento de Valores com NumPy O arredondamento preciso de valores numéricos desempenha um papel muito importante em diversas aplicações científicas e de engenharia. No contexto da programação em Python, a biblioteca NumPy se destaca como uma ferramenta poderosa para manipulação eficiente de arrays e cálculos numéricos em geral. Neste artigo, exploraremos algumas funções de arredondamento numérico disponíveis no NumPy, mostrando alguns exemplos de como empregar essas funções para realizar arredondamentos diversos, incluindo arredondamento de valores de ponto flutuante e para números inteiros. Ao entender como usar essas funções, será possível otimizar nossos códigos e garantir resultados numericamente estáveis em uma variedade de cenários. Vamos às funções de arredondamento de valores com NumPy, para Python. Importar o NumPy O primeiro passo para usar as funções que serão abordadas é importar a biblioteca NumPy no script que usará as funções de arredondamento (o módulo numpy deve estar instalado previamente; caso não esteja, realize a instalação do NumPy seguindo estas instruções): import numpy as np Após importar a biblioteca, vejamos as funções mais importantes para arredondamento de valores numéricos. 1. Função numpy.round Ou seu alias numpy.around(): Arredonda o valor até uma precisão desejada Sintaxe numpy.round(valor,[num_casas_decimais]) Documentação: https://numpy.org/doc/stable/reference/generated/numpy.round.html Exemplo de uso [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/5-funcoes-de-arredondamento-de-valores-com-numpy-em-python/">5 Funções de Arredondamento de Valores com NumPy em Python</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>5 Funções de Arredondamento de Valores com NumPy</h2>
<p>O arredondamento preciso de valores numéricos desempenha um papel muito importante em diversas aplicações científicas e de engenharia. No contexto da programação em Python, a biblioteca NumPy se destaca como uma ferramenta poderosa para manipulação eficiente de arrays e cálculos numéricos em geral.</p>
<p>Neste artigo, exploraremos algumas funções de arredondamento numérico disponíveis no NumPy, mostrando alguns exemplos de como empregar essas funções para realizar arredondamentos diversos, incluindo arredondamento de valores de ponto flutuante e para números inteiros.</p>
<p>Ao entender como usar essas funções, será possível otimizar nossos códigos e garantir resultados numericamente estáveis em uma variedade de cenários.</p>
<p>Vamos às funções de arredondamento de valores com NumPy, para Python.</p>
<h3>Importar o NumPy</h3>
<p>O primeiro passo para usar as funções que serão abordadas é importar a biblioteca NumPy no script que usará as funções de arredondamento (o módulo numpy deve estar instalado previamente; caso não esteja, realize a <a href="http://www.bosontreinamentos.com.br/programacao-em-python/introducao-a-biblioteca-numpy-em-python/">instalação do NumPy seguindo estas instruções</a>):</p>
<pre><span style="font-weight: 400;">import numpy as np</span></pre>
<p>Após importar a biblioteca, vejamos as funções mais importantes para arredondamento de valores numéricos.</p>
<h3><span style="font-weight: 400;">1. Função numpy.round</span></h3>
<p><span style="font-weight: 400;">Ou seu alias <strong>numpy.around()</strong>: Arredonda o valor até uma precisão desejada</span></p>
<p><strong>Sintaxe</strong></p>
<pre><span style="font-weight: 400; color: #800080;">numpy.round(valor,[num_casas_decimais])</span></pre>
<p><span style="font-weight: 400;">Documentação: <a href="https://numpy.org/doc/stable/reference/generated/numpy.round.html" target="_blank" rel="noopener">https://numpy.org/doc/stable/reference/generated/numpy.round.html</a></span></p>
<p><strong>Exemplo de uso</strong></p>
<pre><span style="font-weight: 400; color: #339966;"># Criar um array de valores a serem arredondados:</span>
<span style="font-weight: 400;">valores = np.array([5.0, 6.98, 0.9863, 555, 10.099])</span>
<span style="font-weight: 400; color: #339966;"># Podemos usar também uma simples lista (descomentar para testar):</span>
<span style="font-weight: 400; color: #339966;"># valores = [5.0, 6.98, 0.9863, 555, 10.099] </span>
<span style="font-weight: 400;">print('Array original:')</span>
<span style="font-weight: 400;">print(valores)</span>
<span style="font-weight: 400;">
print('\nValores arredondados:')</span>
<span style="font-weight: 400;">print(np.round(valores, decimals = 2))</span>
<span style="font-weight: 400;">print(np.round(valores, decimals = 3))</span>
<span style="font-weight: 400;">print(np.around(valores)) <span style="color: #339966;"># valores são exibidos no formato float64</span></span>
<span style="font-weight: 400;">print(np.around(valores).astype(int)) <span style="color: #339966;"># converter valores para int antes da exibição (não mostra o ponto)</span></span></pre>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;">Array original:</span>
<span style="color: #000000;">[ 5. 6.98 0.9863 555. 10.099 ]
</span>
<span style="color: #000000;">Valores arredondados:</span>
<span style="color: #000000;">[ 5. 6.98 0.99 555. 10.1 ]</span>
<span style="color: #000000;">[ 5. 6.98 0.986 555. 10.099]</span>
<span style="color: #000000;">[ 5. 7. 1. 555. 10.]</span>
<span style="color: #000000;">[ 5 7 1 555 10]</span></pre>
<h3><span style="font-weight: 400;">2. Função numpy.floor </span></h3>
<p><span style="font-weight: 400;">Arredonda para o maior inteiro menor que o valor de entrada (&#8220;tipo&#8221; arredonda para baixo).</span></p>
<p><span style="font-weight: 400;">Retorna o menor inteiro i, tal que <em>i &lt;= valor</em></span></p>
<p><span style="font-weight: 400;">Documentação: <a href="https://numpy.org/doc/stable/reference/generated/numpy.floor.html" target="_blank" rel="noopener">https://numpy.org/doc/stable/reference/generated/numpy.floor.html</a></span></p>
<p><strong>Exemplo</strong></p>
<pre><span style="font-weight: 400;">valores = np.array([6.3, 0.786, 55, 10.999, -0.63])</span>
<span style="font-weight: 400;">print('Array original:')</span>
<span style="font-weight: 400;">print(valores)</span>
<span style="font-weight: 400;">print('\nValores arredondados:')</span>
<span style="font-weight: 400;">print(np.floor(valores))</span></pre>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;">Array original:</span>
<span style="color: #000000;">[ 6.3 0.786 55. 10.999 -0.63 ]</span>
<span style="color: #000000;">Valores arredondados:</span>
<span style="color: #000000;">[ 6. 0. 55. 10. -1.]</span></pre>
<h3><span style="font-weight: 400;">3. Função numpy.ceil </span></h3>
<p><span style="font-weight: 400;">Arredonda para o inteiro imediatamente maior que valor de entrada (&#8220;tipo&#8221; arredonda para cima). Essa função r</span><span style="font-weight: 400;">etorna o menor número inteiro i, tal que <em>i &gt;= valor</em></span></p>
<p><span style="font-weight: 400;">Documentação: <a href="https://numpy.org/doc/stable/reference/generated/numpy.ceil.html" target="_blank" rel="noopener">https://numpy.org/doc/stable/reference/generated/numpy.ceil.html</a></span></p>
<p><strong>Exemplo</strong></p>
<pre><span style="font-weight: 400;">valores = np.array([6.3, 0.786, 55, 10.999, -0.63])  # mesmo array usado em np.floor</span>
<span style="font-weight: 400;">print('Array original:')</span>
<span style="font-weight: 400;">print(valores)</span>
<span style="font-weight: 400;">print('\nValores arredondados:')</span>
<span style="font-weight: 400;">print(np.ceil(valores))</span></pre>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;">Array original:</span>
<span style="color: #000000;">[ 6.3 0.786 55. 10.999 -0.63 ]</span>
<span style="color: #000000;">Valores arredondados:</span>
<span style="color: #000000;">[ 7. 1. 55. 11. -0.]</span></pre>
<h3><span style="font-weight: 400;">4. Função numpy.trunc</span></h3>
<p><span style="font-weight: 400;">Truncar um valor numérico. Retorna o valor truncado da entrada, elemento a elemento.</span></p>
<p><span style="font-weight: 400;">O valor truncado do escalar x é o inteiro mais próximo i que está mais próximo de zero do que x. Resumindo, a parte </span><span style="font-weight: 400;">fracionária do valor atribuido é descartada.</span></p>
<h4><em>O que é truncar?</em></h4>
<p>O verbo &#8220;truncar&#8221; se refere ao ato de cortar ou remover a parte fracionária de um número, mantendo apenas a parte inteira. A operação de truncamento geralmente é realizada em números de ponto flutuante, onde há uma parte inteira e uma parte decimal. Também é possível aplicar a operação de truncagem em strings, o que não é o caso aqui.</p>
<p>Por exemplo, se tivermos o número de ponto flutuante 7.75 e quisermos truncá-lo para um inteiro, o resultado será 7, pois a parte decimal (0.75) foi removida.</p>
<p>É importante observar que o truncamento difere do arredondamento, onde a parte decimal é arredondada para o inteiro mais próximo. No truncamento, a parte decimal é simplesmente removida, resultando sempre em um número menor ou igual ao número original.</p>
<p><span style="font-weight: 400;">Documentação de numpy.trunc: <a href="https://numpy.org/doc/stable/reference/generated/numpy.trunc.html" target="_blank" rel="noopener">https://numpy.org/doc/stable/reference/generated/numpy.trunc.html</a></span></p>
<p><strong>Exemplo</strong></p>
<pre><span style="font-weight: 400;">valores = np.array([6.3, 0.786, 55, 10.999, -0.63])</span>
<span style="font-weight: 400;">print('Valores truncados:')</span>
<span style="font-weight: 400;">print(np.trunc(valores))</span></pre>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;">Valores truncados:</span>
<span style="color: #000000;">[ 6. 0. 55. 10. -0.]</span></pre>
<h3><span style="font-weight: 400;">5. Função numpy.fix</span></h3>
<p><span style="font-weight: 400;">Arredonda para o número inteiro mais próximo em direção a zero.</span></p>
<p><span style="font-weight: 400;">Arredonda um array de pontos flutuantes elemento a elemento para o número inteiro mais próximo de zero. Os valores arredondados são retornados como valores de ponto flutuante.</span></p>
<p><span style="font-weight: 400;">Documentação: <a href="https://numpy.org/doc/stable/reference/generated/numpy.fix.html" target="_blank" rel="noopener">https://numpy.org/doc/stable/reference/generated/numpy.fix.html</a></span></p>
<p><strong>Exemplo</strong></p>
<pre><span style="font-weight: 400;">valores = np.array([6.3, 0.786, 55, 10.999, -0.63])</span>
<span style="font-weight: 400;">print('Valores Arredondados:')</span>
<span style="font-weight: 400;">print(np.fix(valores))</span></pre>
<p><strong>Resultado:</strong></p>
<pre><span style="color: #000000;">Valores Arredondados:</span>
<span style="color: #000000;">[ 6. 0. 55. 10. -0.]</span></pre>
<h3>Conclusão</h3>
<p>As funções de arredondamento proporcionadas pela biblioteca NumPy conferem uma grande flexibilidade aos programadores Python ao lidar com operações numéricas. Seja em análises estatísticas, processamento de dados ou simulações complexas, o entendimento aprofundado dessas funções é fundamental para assegurar resultados confiáveis e consistentes.</p>
<p>Neste artigo, trabalhamos com as principais funções de arredondamento do NumPy, com exemplos de códigos simples para melhor entendimento de cada função. Ao incorporar esses conhecimentos em seus projetos, você estará mais preparado para resolver desafios numéricos e obter soluções eficientes e precisas ao criar aplicações com Python.</p>
<h3>Colabore com a Bóson Treinamentos</h3>
<p>Ajude o canal adquirindo meus cursos na Udemy:</p>
<ul>
<li>Bancos de Dados com MySQL Básico: <a href="https://bit.ly/35QdWE4" target="_blank" rel="noopener">https://bit.ly/35QdWE4</a></li>
<li>Lógica de Programação com Português Estruturado: <a href="https://bit.ly/3QKPn22" target="_blank" rel="noopener">https://bit.ly/3QKPn22</a></li>
<li>Programação em Python do Zero: <a href="https://bit.ly/python-boson" target="_blank" rel="noopener">https://bit.ly/python-boson</a></li>
</ul>
<p>Adquira também livros e outros itens na loja da Bóson Treinamentos na Amazon e ajude o canal a se manter e crescer: <a href="https://www.amazon.com.br/shop/bosontreinamentos" target="_blank" rel="noopener">https://www.amazon.com.br/shop/bosontreinamentos</a></p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/5-funcoes-de-arredondamento-de-valores-com-numpy-em-python/">5 Funções de Arredondamento de Valores com NumPy em Python</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-python/5-funcoes-de-arredondamento-de-valores-com-numpy-em-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programa que calcula as raízes de uma equação de segundo grau em Fortran</title>
		<link>https://www.bosontreinamentos.com.br/fortran/programa-que-calcula-as-raizes-de-uma-equacao-de-segundo-grau-em-fortran/</link>
					<comments>https://www.bosontreinamentos.com.br/fortran/programa-que-calcula-as-raizes-de-uma-equacao-de-segundo-grau-em-fortran/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 10 Oct 2023 11:42:21 +0000</pubDate>
				<category><![CDATA[Fortran]]></category>
		<category><![CDATA[FORTRAN]]></category>
		<category><![CDATA[Matemática]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19740</guid>

					<description><![CDATA[<p>Calcular as raízes de uma equação de segundo grau em Fortran Hoje vamos codificar um pequeno programa que permite calcular as raízes de uma equação quadrática polinomial (equação de segundo grau), usando a linguagem Fortran. Relembrando: uma equação de 2º Grau tem o seguinte formato: ax2 + bx + c = 0 Nesta equação, o valor x é chamado de &#8220;incógnita&#8221;, e indica um valor desconhecido. Já as variáveis a, b e c são os coeficientes da equação. Para resolver uma equação de segundo grau, precisamos determinar os valores reais da incógnita x que tornam a equação verdadeira. Esses valores são as raízes da equação. Uma equação do segundo grau pode ter zero, uma ou no máximo duas raízes reais. No caso de não ter raízes reais, ela ainda possui raízes complexas &#8211; caso que nosso programa também será capaz de calcular. Vamos ao código. Código PROGRAM EQ_SEG_GRAU IMPLICIT NONE ! Declaração das variáveis REAL :: a REAL :: b REAL :: c REAL :: delta REAL :: part_imag REAL :: part_real REAL :: x1 REAL :: x2 !Entrada do usuário: coeficientes da equação WRITE (*,*) 'Programa que calcula as raízes de uma equação de segundo grau' WRITE (*,*) 'Equação [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/fortran/programa-que-calcula-as-raizes-de-uma-equacao-de-segundo-grau-em-fortran/">Programa que calcula as raízes de uma equação de segundo grau em Fortran</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Calcular as raízes de uma equação de segundo grau em Fortran</h2>
<p>Hoje vamos codificar um pequeno programa que permite calcular as raízes de uma equação quadrática polinomial (equação de segundo grau), usando a linguagem Fortran.</p>
<p>Relembrando: uma equação de 2º Grau tem o seguinte formato:</p>
<p style="text-align: center;"><span style="color: #800000;"><strong><span style="font-size: 18pt;">ax<sup>2</sup> + bx + c = 0</span></strong></span></p>
<p>Nesta equação, o valor x é chamado de &#8220;incógnita&#8221;, e indica um valor desconhecido. Já as variáveis a, b e c são os coeficientes da equação.</p>
<p>Para resolver uma equação de segundo grau, precisamos determinar os valores reais da incógnita x que tornam a equação verdadeira. Esses valores são as <em>raízes da equação</em>.</p>
<p>Uma equação do segundo grau pode ter zero, uma ou no máximo duas raízes reais. No caso de não ter raízes reais, ela ainda possui raízes complexas &#8211; caso que nosso programa também será capaz de calcular.</p>
<p>Vamos ao código.</p>
<h3>Código</h3>
<pre><strong>PROGRAM EQ_SEG_GRAU</strong>
<strong>IMPLICIT NONE

</strong><span style="color: #339966;"><strong>! Declaração das variáveis</strong></span>
<strong>REAL :: a</strong>
<strong>REAL :: b</strong>
<strong>REAL :: c</strong>
<strong>REAL :: delta</strong>
<strong>REAL :: part_imag</strong>
<strong>REAL :: part_real</strong>
<strong>REAL :: x1</strong>
<strong>REAL :: x2

</strong><span style="color: #339966;"><strong>!Entrada do usuário: coeficientes da equação</strong></span>
<strong>WRITE (*,*) 'Programa que calcula as raízes de uma equação de segundo grau'</strong>
<strong>WRITE (*,*) 'Equação no formato a * x2 + b * x + c = 0'</strong>
<strong>WRITE (*,*) 'Digite os coeficientes A, B e C:'</strong>
<strong>READ (*,*) a, b, c

</strong><span style="color: #339966;"><strong>!Coeficientes:</strong></span>
<strong>WRITE (*,*) 'Os coeficientes fornecidos A, B e C são: ', a, b, c

</strong><span style="color: #339966;"><strong>!Calcular o delta (discriminante)</strong></span>
<strong>delta = b**2 - 4 * a * c

</strong><span style="color: #339966;"><strong>! Calcular as raízes</strong></span>
<strong>IF (delta &gt; 0.) THEN <span style="color: #339966;">! Existem duas raízes reais</span></strong>
<strong>  x1 = (-b + sqrt(delta)) / (2. * a)</strong>
<strong>  x2 = (-b - sqrt(delta)) / (2. * a)</strong>
<strong>  WRITE(*,*) 'A equação possui duas raízes reais:'</strong>
<strong>  WRITE(*,*) 'x1 = ', x1</strong>
<strong>  WRITE(*,*) 'x2 = ', x2</strong>
<strong>ELSE IF (delta == 0.) THEN <span style="color: #339966;">! Há apenas uma raiz real, repetida</span></strong>
<strong>  x1 = (-b) / (2. *a)</strong>
<strong>  WRITE(*,*) 'A equação possui duas raízes reais idênticas:'</strong>
<strong>  WRITE(*,*) 'x1 = x2 = ', x1</strong>
<strong>ELSE <span style="color: #339966;">! A equação possui raízes complexas</span></strong>
<strong>  part_real = (-b) / (2. * a)</strong>
<strong>  part_imag = sqrt(abs(delta)) / (2. * a)</strong>
<strong>  WRITE(*,*) 'A equação possui raízes complexas:'</strong>
<strong>  WRITE(*,*) 'x1 = ', part_real, ' + ', part_imag, 'i'</strong>
<strong>  WRITE(*,*) 'x2 = ', part_real, ' - ', part_imag, 'i'</strong>
<strong>END IF

</strong><strong>END PROGRAM EQ_SEG_GRAU</strong></pre>
<h3>Teste</h3>
<p>Vamos executar o programa, passando como valores dos coeficientes a, b e c respectivamente 2, 4 e 1 &#8211; ou seja, a equação 2x<sup>2</sup> + 4x +1 = 0</p>
<pre><span style="color: #000000;"><strong>Programa que calcula as raízes de uma equação de segundo grau</strong></span>
<span style="color: #000000;"><strong>Equação no formato a * x2 + b * x + c = 0</strong></span>
<span style="color: #000000;"><strong>Digite os coeficientes A, B e C:</strong></span>
<span style="color: #000000;"><strong>2</strong></span>
<span style="color: #000000;"><strong>4</strong></span>
<span style="color: #000000;"><strong>1</strong></span>
<span style="color: #000000;"><strong>Os coeficientes fornecidos A, B e C são: 2.00000000 4.00000000 1.00000000 </strong></span>
<span style="color: #000000;"><strong>A equação possui duas raízes reais:</strong></span>
<span style="color: #000000;"><strong>x1 = -0.292893231 </strong></span>
<span style="color: #000000;"><strong>x2 = -1.70710683</strong></span></pre>
<h3>Funcionamento do Código</h3>
<p>Inicialmente, são declaradas as variáveis que serão utilizadas no programa. São necessárias variáveis para os coeficientes da equação (a, b e c), o discriminante (delta), as partes real e imaginária das raízes complexas (part_real e part_imag) e para as próprias raízes (x1 e x2).</p>
<p>Na sequência, o programa inicia mostrando algumas mensagens para o usuário, explicando a finalidade do programa e solicitando que o usuário insira os coeficientes da equação (a, b e c). O comando READ é usado para receber esses valores do usuário e armazená-los nas variáveis correspondentes.</p>
<p>Logo após o programa ecoa na tela os coeficientes fornecidos pelo usuário, apenas para confirmar que os valores foram lidos corretamente.</p>
<p>Então são iniciados os cálculos necessários, sendo calculado primeiramente o discriminante (delta) usando a fórmula Δ = b² &#8211; 4ac, que é a parte crítica para determinar o tipo de raízes da equação.</p>
<p>Após calcular o valor do discriminante, o programa determina o tipo de raízes com base no valor de delta. Se delta for maior que zero, há duas raízes reais distintas, que são calculadas usando a fórmula quadrática. Se delta for igual a zero, há apenas uma raiz real (repetida). Caso contrário, existem raízes complexas, e suas partes real e imaginária são calculadas e exibidas.</p>
<p>Após calcular e exibir as raízes na tela, o programa é encerrado.</p>
<p>Resumindo, o programa solicita coeficientes ao usuário, calcula o discriminante (delta) e, com base em seu valor, determina o tipo de raízes da equação de segundo grau, exibindo-as no final.</p>
<h3>Conclusão</h3>
<p>Vimos neste tutorial como criar um programa simples em Fortran para calcular as raízes de uma equação quadrática. Nos próximos tutoriais vamos trabalhar com outros problemas matemáticos e lógicos, criando algoritmos esta linguagem.</p>
<p>Até.</p>
<h3>Colabore com a Bóson Treinamentos</h3>
<p>Ajude o canal adquirindo meus cursos na Udemy:</p>
<ul>
<li>Bancos de Dados com MySQL Básico: <a href="https://bit.ly/35QdWE4" target="_blank" rel="noopener">https://bit.ly/35QdWE4</a></li>
<li>Lógica de Programação com Português Estruturado: <a href="https://bit.ly/3QKPn22" target="_blank" rel="noopener">https://bit.ly/3QKPn22</a></li>
<li>Programação em Python do Zero: <a href="https://bit.ly/python-boson" target="_blank" rel="noopener">https://bit.ly/python-boson</a></li>
</ul>
<p>Adquira também livros e outros itens na loja da Bóson Treinamentos na Amazon e ajude o canal a se manter e crescer: <a href="https://www.amazon.com.br/shop/bosontreinamentos" target="_blank" rel="noopener">https://www.amazon.com.br/shop/bosontreinamentos</a></p>
<p>O post <a href="https://www.bosontreinamentos.com.br/fortran/programa-que-calcula-as-raizes-de-uma-equacao-de-segundo-grau-em-fortran/">Programa que calcula as raízes de uma equação de segundo grau em Fortran</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/fortran/programa-que-calcula-as-raizes-de-uma-equacao-de-segundo-grau-em-fortran/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como instalar o compilador GFortran no Linux para Fortran</title>
		<link>https://www.bosontreinamentos.com.br/fortran/como-instalar-o-compilador-gfortran-no-linux-para-fortran/</link>
					<comments>https://www.bosontreinamentos.com.br/fortran/como-instalar-o-compilador-gfortran-no-linux-para-fortran/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 29 Sep 2023 16:54:25 +0000</pubDate>
				<category><![CDATA[Fortran]]></category>
		<category><![CDATA[FORTRAN]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Matemática]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19749</guid>

					<description><![CDATA[<p>Como instalar o compilador GFortran no Linux Neste tutorial vou mostrar de forma simples e rápida como instalar e executar via terminal o compilador GNU Fortran (GFortran) em um computador com o sistema operacional Linux, para várias distribuições. O que é o GFortran O GFortran (GNU Fortran) é uma implementação da linguagem de programação Fortran no GCC, GNU Compiler Collection, software livre e de código aberto mantido por uma grande comunidade de programadores, que possui compiladores para uma série de linguagens, como C, C++, Ada e outras (além do Fortran, claro). Instalação do GFortran Antes de realizar a instalação do compilador em si, vamos primeiramente verificar se já não temos o GFortran instalado na distribuição Linux. Para isso, execute o comando a seguir no terminal: which gfortran Se nada for retornado no terminal, significa que o compilador não está presente no sistema. Teremos de instalá-lo. Antes de prosseguir com a instalação, devemos atualizar a lista de pacotes dos repositórios: sudo apt update Após atualizar as listas de pacotes, vamos proceder à instalação propriamente dita do compilador GFortran. Se sua distribuição Linux for Debian ou baseada nele (Ubuntu, Mint, etc.), basta executar o comando a seguir : sudo apt install gfortran [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/fortran/como-instalar-o-compilador-gfortran-no-linux-para-fortran/">Como instalar o compilador GFortran no Linux para Fortran</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Como instalar o compilador GFortran no Linux</h2>
<p>Neste tutorial vou mostrar de forma simples e rápida como instalar e executar via terminal o compilador <a href="https://gcc.gnu.org/fortran/" target="_blank" rel="noopener">GNU Fortran</a> (GFortran) em um computador com o <a href="http://www.bosontreinamentos.com.br/curso-de-linux-basico-e-certificacao-lpi-1/">sistema operacional Linux</a>, para várias distribuições.</p>
<h3>O que é o GFortran</h3>
<p>O GFortran (<a href="https://gcc.gnu.org/wiki/GFortran" target="_blank" rel="noopener">GNU Fortran</a>) é uma implementação da linguagem de programação Fortran no GCC, <em>GNU Compiler Collection</em>, software livre e de código aberto mantido por uma grande comunidade de programadores, que possui compiladores para uma série de linguagens, como <a href="http://www.bosontreinamentos.com.br/category/programacao-em-linguagem-c/">C</a>, <a href="http://www.bosontreinamentos.com.br/category/programacao-em-c/">C++</a>, Ada e outras (além do Fortran, claro).</p>
<h3>Instalação do GFortran</h3>
<p>Antes de realizar a instalação do compilador em si, vamos primeiramente verificar se já não temos o GFortran instalado na distribuição Linux. Para isso, execute o comando a seguir no terminal:</p>
<pre><strong>which gfortran</strong></pre>
<p>Se nada for retornado no terminal, significa que o compilador não está presente no sistema. Teremos de instalá-lo.</p>
<p>Antes de prosseguir com a instalação, devemos atualizar a lista de pacotes dos repositórios:</p>
<pre><strong>sudo apt update</strong></pre>
<p>Após atualizar as listas de pacotes, vamos proceder à instalação propriamente dita do compilador GFortran. Se sua distribuição Linux for Debian ou baseada nele (Ubuntu, Mint, etc.), basta executar o comando a seguir :</p>
<pre><strong>sudo apt install gfortran</strong></pre>
<p>Caso sua distro seja baseada em pacotes RPM, como Red Hat Enterprise Linux, CentOS, ou Fedora, entre outros, execute:</p>
<pre><strong>sudo dnf install gcc-gfortran</strong></pre>
<p>Para versões mais antigas desses sistemas use:</p>
<pre><strong>sudo yum install gcc-gfortran</strong></pre>
<p>E se você estiver usando a distribuição Arch Linux ou derivada, use o gerenciador pacman:</p>
<pre><strong>sudo pacman -S gcc-fortran</strong></pre>
<p>Após o término da instalação, verifique se tudo correu bem consultando a versão instalada com a opção <strong>&#8211;version</strong> do comando <strong>gfortran</strong>, como segue:</p>
<pre><strong>gfortran --version</strong></pre>
<p>Saída:</p>
<div id="attachment_19760" style="width: 609px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-19760" class="wp-image-19760" title="GFortran instalado em um Linux Ubuntu, por Fábio dos Reis." src="http://www.bosontreinamentos.com.br/wp-content/uploads/2023/09/gfortran-11-ubuntu-linux.jpg" alt="GFortran instalado em um Linux Ubuntu, por Fábio dos Reis." width="599" height="87" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2023/09/gfortran-11-ubuntu-linux.jpg 688w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/09/gfortran-11-ubuntu-linux-420x61.jpg 420w" sizes="auto, (max-width: 599px) 100vw, 599px" /><p id="caption-attachment-19760" class="wp-caption-text">GFortran instalado no Linux Ubuntu</p></div>
<p>No meu caso, foi instalada a versão 11.4 do GFortran em um sistema Ubuntu Linux 22.04.</p>
<p>Caso não seja informada a versão, algo saiu errado. Tente executar novamente os passos anteriores.</p>
<h3>Teste do gfortran</h3>
<p>Se tudo correu bem, vamos escrever um programa simples para testar nosso compilador. Para isso, abra um editor de texto de sua escolha e crie um arquivo de nome &#8220;teste.f90&#8221; (o importante aqui é a extensão).</p>
<p>Por exemplo, vou usar o nano para isso:</p>
<pre><strong>nano teste.f90</strong></pre>
<p>No arquivo aberto digite o seguinte código:</p>
<pre><strong>program teste</strong>
<strong>  write(*,*) 'Teste de instalação do Fortran'</strong>
<strong>end program teste</strong></pre>
<p>Salve o arquivo e saia do editor.</p>
<p>Vamos compilar o programa no terminal. Para isso, execute o comando a seguir no diretório onde o arquivo foi salvo:</p>
<pre><strong>gfortran -o teste teste.f90</strong></pre>
<p>Liste o conteúdo da pasta para ver o programa gerado:</p>
<pre><strong>ls -l</strong></pre>
<p>Saída:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-19761 size-full" title="Resultado da compilação de um programa em Fortran no Linux" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2023/09/gfortran-11-ubuntu-linux-compilador.jpg" alt="Resultado da compilação de um programa em Fortran no Linux" width="492" height="41" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2023/09/gfortran-11-ubuntu-linux-compilador.jpg 492w, https://www.bosontreinamentos.com.br/wp-content/uploads/2023/09/gfortran-11-ubuntu-linux-compilador-420x35.jpg 420w" sizes="auto, (max-width: 492px) 100vw, 492px" /></p>
<p>Note no meu exemplo o arquivo de nome &#8220;teste&#8221;, marcado em verde no meu terminal, que é o executável gerado pela compilação do programa com o comando gfortran. Note que ele já possui as permissões de execução configuradas, e desta forma pode ser diretamente executado.</p>
<p>A opção <em>-o teste</em> é usada para criar um executável de nome teste (ou do nome que você quiser); se essa opção não for usada, o programa será compilado normalmente, porém o arquivo gerado terá o nome padrão <strong>a.out</strong>.</p>
<p>Para conhecer mais opções do compilador gfortran, execute o comando <strong>gfortran &#8211;help</strong> no terminal.</p>
<p>Para finalizar, vamos então rodar o programa:</p>
<pre><strong>./teste</strong></pre>
<p>Resultado:</p>
<pre><span style="color: #800000;"><strong> Teste de instalação do Fortran</strong></span></pre>
<p>É isso aí! Compilador GFortran instalado com sucesso no Linux. Nos próximos artigos vamos configurar editores de texto mais elaborados para codificar com mais facilidade e também vamos estudar a sintaxe da linguagem Fortran &#8211; e também mostrarei como instalar o GFortran no Windows, entre outras tarefas.</p>
<p>Até!</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/fortran/como-instalar-o-compilador-gfortran-no-linux-para-fortran/">Como instalar o compilador GFortran no Linux para Fortran</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/fortran/como-instalar-o-compilador-gfortran-no-linux-para-fortran/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programa que gera Progressão Geométrica em Fortran</title>
		<link>https://www.bosontreinamentos.com.br/fortran/programa-que-gera-progressao-geometrica-em-fortran/</link>
					<comments>https://www.bosontreinamentos.com.br/fortran/programa-que-gera-progressao-geometrica-em-fortran/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Thu, 21 Sep 2023 12:48:02 +0000</pubDate>
				<category><![CDATA[Fortran]]></category>
		<category><![CDATA[Matemática]]></category>
		<category><![CDATA[Ciência]]></category>
		<category><![CDATA[FORTRAN]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19721</guid>

					<description><![CDATA[<p>Progressão Geométrica em Fortran Neste tutorial vamos criar um pequeno programa em Fortran para exibir os elementos de uma progressão geométrica, com base em parâmetros fornecidos pelo usuário em tempo de execução. O que é uma Progressão Geométrica? Progressão geométrica (PG) é uma sequência numérica em que cada termo, a partir do segundo, é obtido multiplicando o termo anterior por uma constante chamada de &#8220;razão&#8221;. Matematicamente, uma progressão geométrica pode ser representada da seguinte forma: a, ar, ar2, ar3, &#8230; Onde: a é o primeiro termo da progressão. r é a razão da progressão, que é um número constante. ar é o segundo termo da progressão. ar2 é o terceiro termo da progressão. E assim por diante. Em uma progressão geométrica, a razão r determina como os termos subsequentes são calculados a partir do termo anterior. Se r for maior que 1, a progressão será crescente, e se r estiver entre -1 e 1 (exclusivamente), a progressão será decrescente. Se r for igual a 1, todos os termos serão iguais, formando uma sequência constante. Onde usamos Progressão Geométrica? As progressões geométricas são usadas em várias áreas da matemática e das ciências em geral para modelar crescimento exponencial, decaimento e fenômenos [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/fortran/programa-que-gera-progressao-geometrica-em-fortran/">Programa que gera Progressão Geométrica em Fortran</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Progressão Geométrica em Fortran</h2>
<p>Neste tutorial vamos criar um pequeno programa em Fortran para exibir os elementos de uma progressão geométrica, com base em parâmetros fornecidos pelo usuário em tempo de execução.</p>
<h3>O que é uma Progressão Geométrica?</h3>
<p><strong>Progressão geométrica</strong> (<strong>PG</strong>) é uma sequência numérica em que cada termo, a partir do segundo, é obtido multiplicando o termo anterior por uma constante chamada de &#8220;razão&#8221;.</p>
<p>Matematicamente, uma progressão geométrica pode ser representada da seguinte forma:</p>
<p>a, ar, ar<sup>2</sup>, ar<sup>3</sup>, &#8230;</p>
<p>Onde:</p>
<ul>
<li>a é o primeiro termo da progressão.</li>
<li>r é a razão da progressão, que é um número constante.</li>
<li>ar é o segundo termo da progressão.</li>
<li>ar<sup>2</sup> é o terceiro termo da progressão.</li>
</ul>
<p>E assim por diante.</p>
<p>Em uma progressão geométrica, a razão r determina como os termos subsequentes são calculados a partir do termo anterior. Se r for maior que 1, a progressão será crescente, e se r estiver entre -1 e 1 (exclusivamente), a progressão será decrescente.</p>
<p>Se r for igual a 1, todos os termos serão iguais, formando uma sequência constante.</p>
<h3>Onde usamos Progressão Geométrica?</h3>
<p>As progressões geométricas são usadas em várias áreas da matemática e das ciências em geral para modelar crescimento exponencial, decaimento e fenômenos relacionados à multiplicação ou divisão por uma constante fixa em cada etapa.</p>
<p>São frequentemente aplicadas em finanças, física, biologia, engenharia e muitos outros campos.</p>
<p>Vejamos como implementar um programa em linguagem Fortran que nos permite calcular e exibir os termos de uma progressão geométrica, com base nos valores de termo inicial e razão informados pelo usuário.</p>
<h3>Código</h3>
<pre><span style="color: #ff0000;"><strong>PROGRAM ProgressaoGeometrica

</strong></span><span style="color: #ff0000;"><strong>  IMPLICIT NONE

</strong></span><span style="color: #ff0000;"><strong>  INTEGER :: n</strong></span>
<span style="color: #ff0000;"><strong>  REAL(8) :: a, r</strong></span>
<span style="color: #ff0000;"><strong>  INTEGER :: i

</strong></span><span style="color: #ff0000;"><strong>  WRITE (*,*) 'Programa para calcular e mostrar uma Progressão Geométrica'</strong></span>
<span style="color: #ff0000;"><strong>  WRITE (*,*) 'Digite o primeiro termo (a):'</strong></span>
<span style="color: #ff0000;"><strong>  READ(*, *) a</strong></span>
<span style="color: #ff0000;"><strong>  WRITE (*,*) 'Digite a razão (r):'</strong></span>
<span style="color: #ff0000;"><strong>  READ(*, *) r</strong></span>
<span style="color: #ff0000;"><strong>  WRITE (*,*) 'Digite o número de termos (n):'</strong></span>
<span style="color: #ff0000;"><strong>  READ(*, *) n

</strong></span><span style="color: #ff0000;"><strong>  IF (n &lt;= 0) THEN</strong></span>
<span style="color: #ff0000;"><strong>    WRITE (*,*) 'O número de termos deve ser maior que zero.'</strong></span>
<span style="color: #ff0000;"><strong>    STOP</strong></span>
<span style="color: #ff0000;"><strong>  END IF

</strong></span><span style="color: #ff0000;"><strong>  WRITE (*,*) 'Os', n, 'primeiros termos da Progressão Geométrica são:'

</strong></span><span style="color: #ff0000;"><strong>  DO i = 1, n</strong></span>
<span style="color: #ff0000;"><strong>    WRITE (*,*) 'Termo ', i, ': ', a</strong></span>
<span style="color: #ff0000;"><strong>    a = a * r ! Calcula o próximo termo</strong></span>
<span style="color: #ff0000;"><strong>  END DO

</strong></span><span style="color: #ff0000;"><strong>END PROGRAM ProgressaoGeometrica</strong></span></pre>
<h3>Teste</h3>
<pre><span style="color: #000000;"><strong>Programa para calcular e mostrar uma Progressão Geométrica</strong></span>
<span style="color: #000000;"><strong>Digite o primeiro termo (a):</strong></span>
<span style="color: #000000;"><strong>5</strong></span>
<span style="color: #000000;"><strong>Digite a razão (r):</strong></span>
<span style="color: #000000;"><strong>2</strong></span>
<span style="color: #000000;"><strong>Digite o número de termos (n):</strong></span>
<span style="color: #000000;"><strong>10

</strong></span><span style="color: #000000;"><strong>Os 10 primeiros termos da Progressão Geométrica são:</strong></span>
<span style="color: #000000;"><strong>Termo 1 : 5.0000000000000000 </strong></span>
<span style="color: #000000;"><strong>Termo 2 : 10.000000000000000 </strong></span>
<span style="color: #000000;"><strong>Termo 3 : 20.000000000000000 </strong></span>
<span style="color: #000000;"><strong>Termo 4 : 40.000000000000000 </strong></span>
<span style="color: #000000;"><strong>Termo 5 : 80.000000000000000 </strong></span>
<span style="color: #000000;"><strong>Termo 6 : 160.00000000000000 </strong></span>
<span style="color: #000000;"><strong>Termo 7 : 320.00000000000000 </strong></span>
<span style="color: #000000;"><strong>Termo 8 : 640.00000000000000 </strong></span>
<span style="color: #000000;"><strong>Termo 9 : 1280.0000000000000 </strong></span>
<span style="color: #000000;"><strong>Termo 10 : 2560.0000000000000</strong> </span></pre>
<h3>Funcionamento do programa Fortran para calcular e mostrar uma progressão geométrica</h3>
<p><strong>IMPLICIT NONE</strong>: Essa instrução força a declaração explícita de todas as variáveis, que é uma boa prática para evitar erros de tipo.</p>
<p>Logo a seguir temos a declaração das variáveis usadas no programa:</p>
<ul>
<li><strong>INTEGER :: n</strong>: Essa variável inteira será usada para armazenar o número de termos da progressão geométrica.</li>
<li><strong>REAL(8) :: a, r</strong>: a é o primeiro termo da progressão e r é a razão. Ambos são números reais com precisão dupla (REAL(8)).</li>
<li><strong>INTEGER :: i</strong>: Essa variável será usada como um contador em um loop.</li>
</ul>
<p>Configuramos então algumas mensagens de  introdução</p>
<p><strong>WRITE (*,*) &#8216;Programa para calcular e mostrar uma Progressão Geométrica&#8217;</strong>: Isso exibe uma mensagem informativa para o usuário no console.<br />
<strong>WRITE (*,*) &#8216;Digite o primeiro termo (a):&#8217;, WRITE (*,*) &#8216;Digite a razão (r):&#8217;, WRITE (*,*) &#8216;Digite o número de termos (n):&#8217;</strong>: Essas mensagens solicitam ao usuário que insira o valor do primeiro termo (a), a razão (r) e o número de termos (n) da progressão geométrica.</p>
<p><strong><em>Lógica principal do programa:</em></strong></p>
<p><strong>IF (n &lt;= 0) THEN</strong>: Esta estrutura condicional verifica se o número de termos (n) é menor ou igual a zero.<br />
<strong>WRITE (*,*) &#8216;O número de termos deve ser maior que zero.&#8217;</strong>: Se o número de termos for menor ou igual a zero, o programa exibe uma mensagem de erro.<br />
<strong>STOP</strong>: A instrução STOP encerra a execução do programa.</p>
<p><strong><em>Mensagem de exibição dos termos da progressão</em></strong></p>
<p><strong>WRITE (*,*) &#8216;Os&#8217;, n, &#8216;primeiros termos da Progressão Geométrica são:&#8217;</strong>: Esta linha de código exibe uma mensagem indicando que os termos da progressão geométrica serão exibidos a seguir.</p>
<p><strong><em>Laço de repetição para o cálculo e exibição dos valores:</em></strong></p>
<p><strong>DO i = 1, n</strong>: Inicia um laço DO que vai de 1 até n. Isso permitirá que o programa calcule e exiba os primeiros n termos da progressão geométrica.<br />
<strong>WRITE (*,*) &#8216;Termo &#8216;, i, &#8216;: &#8216;, a</strong>: Dentro do laço, o programa exibe o número do termo (contado pelo índice i) e o valor do termo atual (a) no console.<br />
<strong>a = a * r</strong>: O valor do termo atual (a) é multiplicado pela razão (r) para calcular o próximo termo da progressão geométrica.</p>
<p><strong><em>Finalização do Programa:</em></strong></p>
<p>O programa atinge o final do laço após calcular e exibir os n termos da progressão, e então é encerrado com a instrução <strong>END PROGRAM</strong>.</p>
<h3>Conclusão</h3>
<p>Neste artigo apresentamos uma sugestão de programa em linguagem Fortran que solicita ao usuário o primeiro termo (a) de uma progressão geométrica, a razão (r) e o número de termos (n) desejados. Em seguida, ele verifica se o número de termos é válido, e se for, calcula e exibe os primeiros n termos da progressão geométrica.</p>
<p>Cada termo é calculado multiplicando o termo anterior pela razão r. O programa usa um laço de repetição DO para repetir essa operação e a exibição até que todos os termos sejam processados.</p>
<p>É isso aí! Veja também: <a href="http://www.bosontreinamentos.com.br/fortran/programa-que-calcula-o-fatorial-de-um-numero-em-fortran/">Como calcular Fatorial com Fortran</a>.</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/fortran/programa-que-gera-progressao-geometrica-em-fortran/">Programa que gera Progressão Geométrica em Fortran</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/fortran/programa-que-gera-progressao-geometrica-em-fortran/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programa que converte um número de binário para decimal em C++</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-binario-para-decimal-em-c/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-binario-para-decimal-em-c/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Wed, 20 Sep 2023 12:59:17 +0000</pubDate>
				<category><![CDATA[Programação em C++]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Matemática]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19702</guid>

					<description><![CDATA[<p>Conversão de um número binário para decimal em C++ Fala pessoal! No artigo passado escrevemos um programa que permitia converter um número decimal em binário, usando C++. Agora vamos criar um pequeno programa que permite realizar o processo inverso &#8211; a conversão de um número binário, fornecido pelo usuário, em seu equivalente decimal, também usando a linguagem C++. Vamos ao código. Código &#8211; Converter binário em decimal com C++ #include&#60;iostream&#62; #include&#60;cmath&#62; using namespace std; int main() { int num, resto, base = 2, soma = 0, i = 0; // Solicita ao usuário que digite o número binário a ser convertido cout &#60;&#60; "CONVERSÃO DE BINÁRIO PARA DECIMAL \n"; cout &#60;&#60; "Digite o número em binário e pressione ENTER: "; cin &#62;&#62; num; // Laço onde é realizada a conversão do número binário em decimal while (num &#62; 0) { resto = num % 10; // Calcula o dígito binário menos significativo soma = soma + (resto * pow(base, i)); // Converte e acumula o dígito binário em decimal num = num / 10; // Remove o dígito binário processado i += 1; // Incrementa o expoente da base (2) } // Exibe o número decimal resultante cout &#60;&#60; "\nNúmero [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-binario-para-decimal-em-c/">Programa que converte um número de binário para decimal em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Conversão de um número binário para decimal em C++</h2>
<p>Fala pessoal! No artigo passado escrevemos um programa que permitia<a href="http://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-decimal-para-binario-em-c/"> converter um número decimal em binário, usando C++</a>. Agora vamos criar um pequeno programa que permite realizar o processo inverso &#8211; a conversão de um número binário, fornecido pelo usuário, em seu equivalente decimal, também usando a linguagem C++.</p>
<p>Vamos ao código.</p>
<h3>Código &#8211; Converter binário em decimal com C++</h3>
<pre><strong>#include&lt;iostream&gt;</strong>
<strong>#include&lt;cmath&gt;

</strong><strong>using namespace std;

</strong><strong>int main() {</strong>
<strong>  int num, resto, base = 2, soma = 0, i = 0;

</strong><span style="color: #339966;"><strong>  // Solicita ao usuário que digite o número binário a ser convertido</strong></span>
<strong>  cout &lt;&lt; "CONVERSÃO DE BINÁRIO PARA DECIMAL \n"; </strong>
<strong>  cout &lt;&lt; "Digite o número em binário e pressione ENTER: ";</strong>
<strong>  cin &gt;&gt; num;

</strong><span style="color: #339966;"><strong>  // Laço onde é realizada a conversão do número binário em decimal</strong></span>
<strong>  while (num &gt; 0) {</strong>
<strong>    resto = num % 10; <span style="color: #339966;">// Calcula o dígito binário menos significativo</span></strong>
<strong>    soma = soma + (resto * pow(base, i)); <span style="color: #339966;">// Converte e acumula o dígito binário em decimal</span></strong>
<strong>    num = num / 10; <span style="color: #339966;">// Remove o dígito binário processado</span></strong>
<strong>    i += 1; <span style="color: #339966;">// Incrementa o expoente da base (2)</span></strong>
<strong>  }

</strong><span style="color: #339966;"><strong>  // Exibe o número decimal resultante</strong></span>
<strong>  cout &lt;&lt; "\nNúmero convertido para decimal: " &lt;&lt; soma;</strong>
<strong>  return 0;</strong>
<strong>}</strong></pre>
<h4>Resultado</h4>
<pre><span style="color: #000000;"><strong>CONVERSÃO DE BINÁRIO PARA DECIMAL </strong></span>
<span style="color: #000000;"><strong>Digite o número em binário e pressione ENTER: 1001111</strong></span>
<span style="color: #000000;"><strong>Número convertido para decimal: 79</strong></span></pre>
<h3>Funcionamento do Código</h3>
<p>O programa inicia incluindo as bibliotecas <strong><em>iostream</em></strong> e <strong><em>cmath</em></strong> para permitir entrada/saída de dados e realizar cálculos matemáticos, respectivamente. Também usa <strong><em>using namespace std</em></strong> para evitar a necessidade de usar std:: antes de funções como cin e cout.</p>
<p>O programa então declara algumas variáveis, incluindo <strong>num</strong> para armazenar o número binário inserido pelo usuário, <strong>resto</strong> para armazenar o dígito binário atualmente sendo processado, <strong>base,</strong> que é 2 (pois estamos convertendo de binário para decimal), <strong>soma</strong> para acumular o valor decimal resultante e <strong>i</strong> para controlar o expoente da base.</p>
<p>Na sequência é solicitado que o usuário insira o número binário que deseja converter.</p>
<p>O programa entra então em um laço <strong>while</strong> que continuará até que o número binário (num) seja maior que zero.</p>
<p>Dentro esse laço, ele calcula o dígito binário menos significativo usando a operação <strong>num % 10</strong>. Isso resulta em 0 ou 1, que é o dígito binário atual.</p>
<p>O dígito binário é convertido em decimal e adicionado à variável soma usando a fórmula <em><strong>soma = soma + (resto * pow(base, i))</strong></em>. Aqui, <em>resto</em> é o dígito binário, <em>base</em> é 2 (base binária) e<em> i</em> é o expoente que começa em 0 e aumenta a cada iteração.</p>
<p>Logo após o número binário (num) é dividido por 10 (num = num / 10) para remover o dígito binário que foi processado.</p>
<p>Então, o expoente da base (i) é incrementado em 1 (i += 1) para lidar com o próximo dígito binário.</p>
<p>Após a conclusão do laço de repetição, o programa exibe o número decimal resultante.</p>
<p>Finalmente, o programa retorna 0, indicando que a execução foi bem-sucedida.</p>
<p>É isso aí! Nos próximos tutoriais veremos outros tipos de conversões de bases numéricas usando a linguagem C++, como a conversão de hexadecimal em decimal e binário e vice-versa.</p>
<p>Até!</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-binario-para-decimal-em-c/">Programa que converte um número de binário para decimal em C++</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-c/programa-que-converte-um-numero-de-binario-para-decimal-em-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programa que calcula o fatorial de um número em Fortran</title>
		<link>https://www.bosontreinamentos.com.br/fortran/programa-que-calcula-o-fatorial-de-um-numero-em-fortran/</link>
					<comments>https://www.bosontreinamentos.com.br/fortran/programa-que-calcula-o-fatorial-de-um-numero-em-fortran/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Wed, 20 Sep 2023 12:00:12 +0000</pubDate>
				<category><![CDATA[Fortran]]></category>
		<category><![CDATA[FORTRAN]]></category>
		<category><![CDATA[Matemática]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19704</guid>

					<description><![CDATA[<p>Fatorial de um número em Fortran Neste artigo vamos criar um pequeno programa que permite calcular o fatorial de um número usando a linguagem Fortran. O programa irá solicitar ao usuário que entre com um número inteiro, calculará o fatorial desse número usando um loop DO e, em seguida, exibirá o resultado. O fatorial será então calculado multiplicando o número pelo número anterior, repetidamente, até que o loop termine. Código do programa a seguir. Código: Fatorial em Fortran PROGRAM fatorial IMPLICIT NONE INTEGER::n,i,fat=1 PRINT *, 'Programa que calcula o fatorial de um número' PRINT *, 'Digite um número para calcular seu fatorial:' READ(*,*) n DO i=1,n fat=fat*i END DO WRITE(*, '(A, I0)') 'O fatorial é ', fat END PROGRAM Testando Programa que calcula o fatorial de um número Digite um número para calcular seu fatorial: 7 O fatorial é 5040 Funcionamento Vejamos o funcionamento do código linha a linha: PROGRAM fatorial: Definimos um programa Fortran de nome &#8220;fatorial&#8221;. IMPLICIT NONE: Esta linha declara que todas as variáveis devem ser explicitamente definidas com seus tipos de dados. Essa é uma boa prática para evitar erros de tipo. INTEGER::n,i,fat=1: Aqui, são declaradas três variáveis: n: número inteiro para o qual calcularemos o [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/fortran/programa-que-calcula-o-fatorial-de-um-numero-em-fortran/">Programa que calcula o fatorial de um número em Fortran</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Fatorial de um número em Fortran</h2>
<p>Neste artigo vamos criar um pequeno programa que permite calcular o fatorial de um número usando a linguagem Fortran.</p>
<p>O programa irá solicitar ao usuário que entre com um número inteiro, calculará o fatorial desse número usando um loop DO e, em seguida, exibirá o resultado. O fatorial será então calculado multiplicando o número pelo número anterior, repetidamente, até que o loop termine.</p>
<p>Código do programa a seguir.</p>
<h3>Código: Fatorial em Fortran</h3>
<pre><strong>PROGRAM fatorial</strong>
<strong>  IMPLICIT NONE</strong>
<strong>  INTEGER::n,i,fat=1</strong>
<strong>  PRINT *, 'Programa que calcula o fatorial de um número'</strong>
<strong>  PRINT *, 'Digite um número para calcular seu fatorial:'</strong>
<strong>  READ(*,*) n</strong>
<strong>  DO i=1,n</strong>
<strong>    fat=fat*i</strong>
<strong>  END DO</strong>
<strong>  WRITE(*, '(A, I0)') 'O fatorial é ', fat</strong>
<strong>END PROGRAM</strong></pre>
<h3>Testando</h3>
<pre><span style="color: #000000;"><strong>Programa que calcula o fatorial de um número</strong></span>
<span style="color: #000000;"><strong>Digite um número para calcular seu fatorial:</strong></span>
<span style="color: #000000;"><strong>7</strong></span>
<span style="color: #000000;"><strong>O fatorial é 5040</strong></span></pre>
<h3>Funcionamento</h3>
<p>Vejamos o funcionamento do código linha a linha:</p>
<ul>
<li><strong>PROGRAM fatorial</strong>: Definimos um programa Fortran de nome &#8220;fatorial&#8221;.</li>
<li><strong>IMPLICIT NONE</strong>: Esta linha declara que todas as variáveis devem ser explicitamente definidas com seus tipos de dados. Essa é uma boa prática para evitar erros de tipo.</li>
<li><strong>INTEGER::n,i,fat=1</strong>: Aqui, são declaradas três variáveis:
<ul>
<li>n: número inteiro para o qual calcularemos o fatorial.</li>
<li>i: variável de controle que será usada em um loop.</li>
<li>fat: variável que armazenará o resultado do fatorial, inicializada com 1.</li>
</ul>
</li>
<li><strong>PRINT *, &#8216;Programa que calcula o fatorial de um número&#8217;</strong>: Mensagem informativa para o usuário, indicando a finalidade do programa.</li>
<li><strong>PRINT *, &#8216;Digite um número para calcular seu fatorial&#8217;</strong>: Mensagem que solicita ao usuário que insira o número para o qual deseja calcular o fatorial.</li>
<li><strong>READ(*,*) n</strong>: Esta linha lê o valor inserido pelo usuário e o armazena na variável n.</li>
<li><strong>DO i=1,n</strong>: Inicia um loop DO que irá executar as instruções dentro dele repetidamente. O loop começa com o valor da variável i igual a 1 e continua até chegar em n.</li>
<li><strong>fat=fat*i</strong>: Dentro do loop, o valor atual de fat (que começa em 1) é multiplicado por i e o resultado é armazenado em fat. Isso efetivamente calcula o fatorial.</li>
<li><strong>END DO</strong>: Encerra o laço DO.
<ul>
<li>Após a conclusão do loop, o programa exibe a mensagem &#8220;O fatorial é&#8221; seguida pelo valor calculado em fat, que é o fatorial do número inserido pelo usuário. Para tal usamos a instrução WRITE:</li>
</ul>
</li>
<li><strong>WRITE(*, &#8216;(A, I0)&#8217;)</strong>: instrução WRITE que formata a saída. Ela diz para escrever para a saída padrão (*) uma string de texto (&#8216;A&#8217;) seguida de um inteiro (&#8216;I0&#8217;).
<ul>
<li><strong>&#8216;O fatorial é &#8216;</strong>: Esta é a string de texto que será impressa.</li>
<li><strong>fat</strong>: E este é o valor do fatorial calculado, que será impresso como um valor inteiro.</li>
</ul>
</li>
<li><strong>END PROGRAM</strong>: Finaliza o programa FORTRAN.</li>
</ul>
<p>É isso aí! No próximo artigo veremos como escrever um programa em Fortran que permite gerar uma sequência de Fibonacci. Até!</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/fortran/programa-que-calcula-o-fatorial-de-um-numero-em-fortran/">Programa que calcula o fatorial de um número em Fortran</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/fortran/programa-que-calcula-o-fatorial-de-um-numero-em-fortran/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como gerar números primos em Python em um intervalo especificado</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-python/como-gerar-numeros-primos-em-python-em-um-intervalo-especificado/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-python/como-gerar-numeros-primos-em-python-em-um-intervalo-especificado/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Mon, 14 Aug 2023 11:49:39 +0000</pubDate>
				<category><![CDATA[Programação em Python]]></category>
		<category><![CDATA[Algoritmos]]></category>
		<category><![CDATA[Matemática]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19616</guid>

					<description><![CDATA[<p>Gerar números primos em Python em um intervalo especificado Exercício: Escreva um programa em Python que retorne uma lista de números primos compreendidos em um intervalo fornecido pelo usuário (incluindo os extremos). Use funções para tal. Por exemplo, ao executar o script se o usuário solicitar a lista de primos entre 7 e 50, o programa deve retornar um resultado como segue: Entre com o menor valor: 7 Entre com o maior valor: 50 Os números primos no intervalo de 7 a 50 são: 7 11 13 17 19 23 29 31 37 41 43 47 Vejamos o código que permite gerar números primos em Python. Código # Como gerar números primos em um intervalo numérico # Função para verificar os números primos def primo(n): if n &#60; 2: return False for i in range(2, int(n/2)+1): if n % i == 0: return False return True if __name__=='__main__': # Usuário escolhe o intervalo inf = int(input('Entre com o menor valor: ')) sup = int(input('Entre com o maior valor: ')) print('Os primos no intervalo de {} a {} são:'.format(inf, sup)) for i in range(inf, sup + 1): if primo(i): print(i, end=' ') Funcionamento do script Vou dividir a explicação em duas [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/como-gerar-numeros-primos-em-python-em-um-intervalo-especificado/">Como gerar números primos em Python em um intervalo especificado</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Gerar números primos em Python em um intervalo especificado</h2>
<p><em>Exercício: Escreva um programa em Python que retorne uma lista de números primos compreendidos em um intervalo fornecido pelo usuário (incluindo os extremos). Use funções para tal.</em></p>
<p>Por exemplo, ao executar o script se o usuário solicitar a lista de primos entre 7 e 50, o programa deve retornar um resultado como segue:</p>
<pre><span style="color: #000000; font-size: 14pt;">Entre com o menor valor: </span>
<span style="color: #000000; font-size: 14pt;">7</span>
<span style="color: #000000; font-size: 14pt;">Entre com o maior valor: </span>
<span style="color: #000000; font-size: 14pt;">50</span>
<span style="color: #000000; font-size: 14pt;">Os números primos no intervalo de 7 a 50 são:</span>
<span style="color: #000000; font-size: 14pt;">7 11 13 17 19 23 29 31 37 41 43 47 </span></pre>
<p>Vejamos o código que permite gerar números primos em Python.</p>
<h3>Código</h3>
<pre><span style="color: #339966;"><strong># Como gerar números primos em um intervalo numérico</strong></span>
<span style="color: #339966;"><strong># Função para verificar os números primos</strong></span>
<strong>def primo(n):</strong>
<strong>    if n &lt; 2:</strong>
<strong>        return False</strong>
<strong>    for i in range(2, int(n/2)+1):</strong>
<strong>        if n % i == 0:</strong>
<strong>            return False</strong>
<strong>    return True

</strong><strong>if __name__=='__main__':</strong>
<span style="color: #339966;"><strong>    # Usuário escolhe o intervalo</strong></span>
<strong>    inf = int(input('Entre com o menor valor: '))</strong>
<strong>    sup = int(input('Entre com o maior valor: '))

</strong><strong>    print('Os primos no intervalo de {} a {} são:'.format(inf, sup))

</strong><strong>    for i in range(inf, sup + 1):</strong>
<strong>        if primo(i):</strong>
<strong>            print(i, end=' ')</strong></pre>
<h3>Funcionamento do script</h3>
<p>Vou dividir a explicação em duas partes: a função primo e o bloco principal do programa.</p>
<h4>Função primo(n)</h4>
<p>A função <em><strong>primo(n)</strong></em> é definida para verificar se um número n é primo ou não. Ela funciona da seguinte maneira:</p>
<ol>
<li>Verifica se um valor n passado como parâmetro é menor que 2. Se for, retorna False, pois números menores que 2 não são primos.</li>
<li>Se n não for menor do que 2, a função inicia um loop que percorre os valores de i de 2 até n/2 + 1 (metade +1 do valor informado).</li>
<li>Para cada valor de i, verifica se n é divisível por i (ou seja, se n % i == 0). Se essa condição for verdadeira, significa que n não é primo, pois possui um divisor além de 1 e ele mesmo. Portanto, a função retorna False.</li>
<li>Caso nenhum valor de i resulte em uma divisão exata de n, a função retorna True, indicando que n é um número primo.</li>
</ol>
<h4>Bloco if __name__==&#8217;__main__&#8217;:</h4>
<p>No bloco principal, o programa realiza as seguintes ações:</p>
<ol>
<li>Solicita que o usuário insira o valor mínimo (inf) e o valor máximo (sup) do intervalo a gerar.</li>
<li>Exibe uma mensagem informando que os números primos no intervalo de inf a sup serão exibidos na sequência.</li>
<li>Usando um laço for, percorre todos os valores de i no intervalo de inf a sup + 1.</li>
<li>Para cada valor de i, chama a função primo(i) para verificar se i é um número primo.</li>
<li>Se i for primo (ou seja, se a função primo(i) retornar True), o valor de i é impresso na mesma linha, seguido de um espaço. Isso ocorre para todos os números primos encontrados no intervalo.</li>
</ol>
<p>Portanto, o programa vai iterar por todos os números no intervalo especificado pelo usuário, verificar se cada número é primo usando a função primo(n), e imprimir os números primos encontrados.</p>
<p>Veja que essa implementação é funcional, porém não é a mais eficiente em termos de tempo de execução para encontrar números primos, especialmente para intervalos maiores, pois realiza uma divisão para cada número no intervalo.</p>
<p>Existem algoritmos mais eficientes para geração de números primos, como o <a href="https://pt.wikipedia.org/wiki/Crivo_de_Eratóstenes" target="_blank" rel="noopener">Crivo de Eratóstenes</a> .</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/como-gerar-numeros-primos-em-python-em-um-intervalo-especificado/">Como gerar números primos em Python em um intervalo especificado</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-python/como-gerar-numeros-primos-em-python-em-um-intervalo-especificado/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Algoritmo para verificar se um número pertence à série de Fibonacci</title>
		<link>https://www.bosontreinamentos.com.br/logica-de-programacao/algoritmo-para-verificar-se-um-numero-pertence-a-serie-de-fibonacci/</link>
					<comments>https://www.bosontreinamentos.com.br/logica-de-programacao/algoritmo-para-verificar-se-um-numero-pertence-a-serie-de-fibonacci/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 11 Jul 2023 14:37:26 +0000</pubDate>
				<category><![CDATA[Lógica de Programação]]></category>
		<category><![CDATA[Algoritmos]]></category>
		<category><![CDATA[Matemática]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=19547</guid>

					<description><![CDATA[<p>Como verificar se um número pertence à série de Fibonacci Neste artigo vamos criar um algoritmo que permite determinar se um número n fornecido por um usuário pertence à série de Fibonacci ou não.   O que é a sequência de Fibonacci   A sequência (ou série) de Fibonacci é uma sequência de números infinita na qual cada número é a soma dos dois números anteriores a ele. Essa sequência se inicia com os números 0 e 1, e a partir deles, cada número seguinte é calculado efetuando a soma de seus dois antecessores.   Os dez primeiros números na sequência de Fibonacci são:   0, 1, 1, 2, 3, 5, 8, 13, 21 e 34   Podemos gerar a sequência de Fibonacci usando diversas técnicas distintas. Veja como gerar Fibonacci de forma recursiva e iterativa aqui.   Como saber se um número pertence à série de Fibonacci?   Para determinar se um valor está presente na sequência de Fibonacci, podemos empregar uma propriedade interessante, chamada de Fórmula de Binet, que é descrita a seguir:   &#8220;Um número é Fibonacci se e apenas se uma ou ambas as expressões 5*n2 + 4 ou 5*n2 – 4 retornarem um quadrado perfeito.&#8221; [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/logica-de-programacao/algoritmo-para-verificar-se-um-numero-pertence-a-serie-de-fibonacci/">Algoritmo para verificar se um número pertence à série de Fibonacci</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Como verificar se um número pertence à série de Fibonacci</h2>
<div>Neste artigo vamos criar um algoritmo que permite determinar se um número n fornecido por um usuário pertence à série de Fibonacci ou não.</div>
<h3> </h3>
<h3>O que é a sequência de Fibonacci</h3>
<div> </div>
<div>A sequência (ou série) de Fibonacci é uma sequência de números infinita na qual cada número é a soma dos dois números anteriores a ele.</div>
<div>Essa sequência se inicia com os números 0 e 1, e a partir deles, cada número seguinte é calculado efetuando a soma de seus dois antecessores.</div>
<div> </div>
<div>Os dez primeiros números na sequência de Fibonacci são:</div>
<div> </div>
<div style="text-align: center;"><strong>0, 1, 1, 2, 3, 5, 8, 13, 21 e 34</strong></div>
<div> </div>
<div>Podemos gerar a sequência de Fibonacci usando diversas técnicas distintas. Veja como <a href="http://www.bosontreinamentos.com.br/logica-de-programacao/algoritmo-para-fibonacci-recursivo-e-iterativo-logica-de-programacao/">gerar Fibonacci de forma recursiva e iterativa aqui</a>.</div>
<div> </div>
<h3>Como saber se um número pertence à série de Fibonacci?</h3>
<div> </div>
<div>Para determinar se um valor está presente na sequência de Fibonacci, podemos empregar uma propriedade interessante, chamada de <strong>Fórmula de Binet</strong>, que é descrita a seguir:</div>
<div> </div>
<blockquote>
<div><strong><span style="font-size: 14pt;">&#8220;Um número é Fibonacci se e apenas se uma ou ambas as expressões 5*n<sup>2</sup> + 4 ou 5*n<sup>2</sup> – 4 retornarem um quadrado perfeito.&#8221;</span></strong></div>
</blockquote>
<div> </div>
<div>Um quadrado perfeito é um número inteiro que pode ser expresso como o quadrado exato de outro número inteiro. Ou seja, é um número que pode ser obtido multiplicando um número por si mesmo.</div>
<div> </div>
<div>Veja um algoritmo sugerido para <a href="http://www.bosontreinamentos.com.br/logica-de-programacao/algoritmo-para-verificar-se-numero-e-quadrado-perfeito/">determinação de quadrados perfeitos aqui</a>.</div>
<div> </div>
<div>Vamos agora aos algoritmos para determinar se um número qualquer é Fibonacci ou não.</div>
<div> </div>
<h3>Algoritmo em Português Estruturado</h3>
<div> </div>
<div>A seguir temos uma sugestão de algoritmo, usando o Portugol Studio, que permite saber se um número n fornecido pelo usuário pertence à série de Fibonacci ou não:</div>
<div> </div>
<pre><strong>programa</strong>
<strong>{</strong>
<strong>inclua biblioteca Matematica --&gt; m</strong>
<strong>inclua biblioteca Tipos --&gt; t

</strong><strong>real num</strong>
<strong>inteiro raiz

</strong><strong>  funcao inicio()</strong>
<strong>  {</strong>
<strong>  escreva("Descobrir se número é Fibonacci\n")</strong>
<strong>  escreva("Entre com um número: ")</strong>
<strong>  leia(num)

</strong><strong>  se (eFibonacci(num)) {</strong>
<strong>      escreva(num + " pertence à série de Fibonacci.")</strong>
<strong>  }</strong>
<strong>  senao {</strong>
<strong>      escreva(num + " não pertence à série de Fibonacci.")</strong>
<strong>  }</strong>
<strong>}

</strong><span style="color: #339966;"><strong>  // Função para determinar se número é quadrado perfeito</strong></span>
<strong>  funcao logico quadradoPerfeito(real x) {</strong>
<strong>      raiz = t.real_para_inteiro(m.raiz(x, 2.0))</strong>
<strong>      retorne raiz * raiz == x</strong>
<strong>  }

</strong><span style="color: #339966;"><strong>  // Função para verificar se número pertence à série de Fibonacci</strong></span>
<strong>  funcao logico eFibonacci(real n){</strong>
<strong>      <span style="color: #339966;">// n é Fibonacci se o resultado de 5*n² + 4 ou 5*n² - 4 (ou ambos) for quadrado perfeito.</span></strong>
<strong>      retorne quadradoPerfeito(5*n*n + 4) ou quadradoPerfeito(5*n*n - 4)</strong>
<strong>  }</strong>
<strong>}</strong></pre>
<div> </div>
<div><strong><em>Testando:</em></strong></div>
<div> </div>
<pre><span style="color: #800000;"><strong>Descobrir se número é Fibonacci</strong></span>
<span style="color: #800000;"><strong>Entre com um número: 17711</strong></span>
<span style="color: #800000;"><strong>17711.0 pertence à série de Fibonacci.</strong></span></pre>
<div> </div>
<pre><span style="color: #800000;"><strong>Descobrir se número é Fibonacci</strong></span>
<span style="color: #800000;"><strong>Entre com um número: 12290</strong></span>
<span style="color: #800000;"><strong>12290.0 não pertence à série de Fibonacci.</strong></span></pre>
<div> </div>
<h3>Algoritmo em Python</h3>
<div> </div>
<div>E a seguir temos um algoritmo em Python que permite determinar se um número n fornecido pelo usuário pertence à série de Fibonacci ou não. Para este programa faremos usa da biblioteca padrão de funções matemáticas do Python, o <a href="http://www.bosontreinamentos.com.br/programacao-em-python/7-1-python-funcoes-matematicas-e-modulo-math/">módulo Math</a>:</div>
<div> </div>
<pre><strong>import math

</strong><span style="color: #339966;"><strong># Função que verifica se n é um quadrado perfeito.</strong></span>
<strong>def quadradoPerfeito(x):</strong>
<strong>    raiz = int(math.sqrt(x))</strong>
<strong>    return raiz*raiz == x</strong>
<strong>  </strong>
<span style="color: #339966;"><strong># Verifica se número n pertence à série de Fibonacci</strong></span>
<span style="color: #339966;"><strong># n é Fibonacci se o resultado de 5*n*n + 4 ou 5*n*n - 4 ou ambos</strong></span>
<span style="color: #339966;"><strong># forem quadrados perfeitos.</strong></span>
<strong>def eFibonacci(n):</strong>
<strong>    return quadradoPerfeito(5*n*n + 4) or quadradoPerfeito(5*n*n - 4)

</strong><strong>if __name__=='__main__':</strong>
<strong>    print("Verificar se número é Fibonacci")</strong>
<strong>    n = int(input('Digite um número qualquer, positivo: '))

</strong><strong>    if(eFibonacci(n)):</strong>
<strong>        print(f"{n} pertence à série de Fibonacci.")</strong>
<strong>    else:</strong>
<strong>        print(f"{n} não pertence à série de Fibonacci.")</strong></pre>
<div>        </div>
<div>O teste é similar ao do algoritmo anterior.</div>
<div> </div>
<div>É isso aí! Nos próximos tutoriais vamos explorar mais algoritmos interessantes e curiosos, como a Torre de Hanoi e a construção de jogos, como o Jogo da Velha e outros.</div>
<div> </div>
<div> </div>
<p>O post <a href="https://www.bosontreinamentos.com.br/logica-de-programacao/algoritmo-para-verificar-se-um-numero-pertence-a-serie-de-fibonacci/">Algoritmo para verificar se um número pertence à série de Fibonacci</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/logica-de-programacao/algoritmo-para-verificar-se-um-numero-pertence-a-serie-de-fibonacci/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
