Teoria de números/10000 primos: diferenças entre revisões

[edição verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Teles (discussão | contribs)
m Foram revertidas as edições de Rodrigofigueii71 (disc) para a última revisão de DARIO SEVERI
Etiqueta: Reversão
Etiqueta: esvaziamento
Linha 11 006:
 
|}
 
== Código fonte da macro utilizada ==
 
Para obter uma réplica da tabela acima, basta fazer o seguinte:
* Criar um novo documento no [[OpenOffice.org/Writer|OpenOffice.org Writer]];
* Copiar o código abaixo para uma nova [[OpenOffice.org/Macro|macro]] do [[OpenOffice.org/Macro/BASIC|OpenOffice.org Basic]].
* Executar a macro escolhendo (quando for perguntado) 500 linhas, 20 colunas e maior número primo igual a 123456. <!-- este número poderia ser calculado pelo programa; vou ver se descubro a fórmula (aproximada) do n-ésimo primo //-->
 
;Notas:
* A execução pode levar alguns minutos (não mais do que 10, para 10.000 primos), pois não foi feito qualquer esforço para otimizar o código.
* No caso de querer converter a tabela resultante para a sintaxe do MediaWiki, pode ser utilizado uma ferramenta para conversão automática. Na Wikipédia inglesa há uma lista de opções disponível na página ''[[w:en:Wikipedia:Tools#Importing (converting) content to Wikipedia (MediaWiki) format|Wikipedia:Tools]]''.
 
<syntaxhighlight lang="QBasic">
Public Plan As Object
 
Sub TabelaDePrimos ()
EscreveTabela (CLng (InputBox ("Quantas linhas:")), CLng (InputBox ("Quantas colunas:")), CLng (InputBox ("Maior número primo permitido:")))
End sub
 
Sub EscreveTabela (MaxL as Long, MaxC as Long, MaxP)
Dim document as object
Dim dispatcher as object
'Dim Cel As Object
'Plan = ThisComponent.getCurrentController().getActiveSheet()
 
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
 
' A palavra "COM" deve ser grafada em minusculo para funcionar.
' O formatador da Wikipedia esta colocando em maiusculo por engano.
dim args1(3) as new com.sun.star.beans.PropertyValue
 
args1(0).Name = "TableName"
args1(0).Value = ""
args1(1).Name = "Columns"
args1(1).Value = MaxC
args1(2).Name = "Rows"
args1(2).Value = MaxL
 
dispatcher.executeDispatch(document, ".uno:InsertTable", "", 0, args1())
 
' A palavra "COM" deve ser grafada em minusculo para funcionar.
' O formatador da Wikipedia esta colocando em maiusculo por engano.
dim args2(0) as new com.sun.star.beans.PropertyValue
 
N=2
For l=0 To MaxL-1
For c=0 to MaxC-1
Do While Not ePrimo(N)
N=N+1
Loop
If N>MaxP Then Exit Sub
'Escreve na tabela
args2(0).Name = "Text"
args2(0).Value = Str(N)
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args2())
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
N=N+1
Next c
Next l
End sub
 
Function ePrimo (n as Long) as Boolean
If n = 2 Then
ePrimo = true
Exit Function
End If
If n Mod 2 = 0 Then
ePrimo = false
Else
For d = 3 To Sqr(n) Step 2
If n Mod d = 0 Then
ePrimo = false
Exit Function
End if
Next d
ePrimo = True
End If
End Function
</syntaxhighlight>
 
== Ver também ==