terça-feira, 28 de setembro de 2021

Múltiplos

 30x- 1 e 30x-11 contém todos os números primos terminados em 9 e números que são múltiplos

 os múltiplos existentes em 30x- 1 podem ser decompostos pelas expressões seguintes:

(30y- 1)(30z+ 1) 

(30y- 7)(30z-17)

(30y-11)(30z-19)

(30y-13)(30z-23)

 os múltiplos existentes em 30x-11 podem ser decompostos pelas expressões seguintes:

(30y-11)(30z+ 1)

(30y- 1)(30z-19)

(30y- 7)(30z- 7)

(30y-13)(30z-13)

(30y-17)(30z-17)

(30y-23)(30z-23)

 Assim sendo todos os elementos existentes em 30x- 1 e 30x-11 que não existam nas expressões dos produtos são primos


 30x-13 e 30x-23 contém todos os números primos terminados em 7 e números que são múltiplos

os múltiplos existentes em 30x-13 podem ser decompostos pelas expressões seguintes:

(30y-13)(30z+ 1) 

(30y- 1)(30z-17)

(30y- 7)(30z-11)

(30y-19)(30z-23)

 os múltiplos existentes em 30x-23 podem ser decompostos pelas expressões seguintes:

(30y-23)(30z+ 1) 

(30y- 1)(30z- 7)

(30y-11)(30z-17)

(30y-13)(30z-19)

Assim sendo todos os elementos existentes em 30x-13 e 30x-23 que não existam nas expressões dos produtos são primos

 

30x- 7 e 30x-17 contém todos os números primos terminados em 3 e números que são múltiplos

 os múltiplos existentes em 30x- 7 podem ser decompostos pelas expressões seguintes:

(30y- 7)(30z+ 1) 

(30y- 1)(30z-23)

(30y-11)(30z-13)

(30y-17)(30z-19)

os múltiplos existentes em 30x-17 podem ser decompostos pelas expressões seguintes:

(30y-17)(30z+ 1) 

(30y- 1)(30z-13)

(30y- 7)(30z-19)

(30y-11)(30z-23)

 Assim sendo todos os elementos existentes em 30x- 7 e 30x-17 que não existam nas expressões dos produtos são primos


30x-19 e 30x+ 1 contém todos os números primos terminados em 1 e números que são múltiplos

 os múltiplos existentes em 30x-19 podem ser decompostos pelas expressões seguintes:

(30y-19)(30z+ 1) 

 (30y- 1)(30z-11)

(30y- 7)(30z-23) 

(30y-13)(30z-17)

 os múltiplos existentes em 30x+ 1 podem ser decompostos pelas expressões seguintes:

(30y+ 1)(30z+ 1) 

(30y- 1)(30z- 1)

(30y- 7)(30z-13)

(30y-11)(30z-11)

(30y-19)(30z-19)

(30y-17)(30z-23)

Assim sendo todos os elementos existentes em 30x-19 e 30x+ 1 que não existam nas expressões dos produtos são primos


podemos então escrever

As expressões abaixo contém todos os números múltiplos que existem em z=30w- 1 sendo os restantes elementos de z=30w- 1 números primos terminados em 9

z=30*(30xy-  y+  x+ 0)- 1   

z=30*(30xy- 7y-17x+ 4)- 1

z=30*(30xy-11y-19x+ 7)- 1

z=30*(30xy-13y-23x+10)- 1


As expressões abaixo contém todos os números múltiplos que existem em z=30w-11 sendo os restantes elementos de z=30w-11 números primos terminados em 9

z=30*(30xy-11y+  x+ 0)-11

z=30*(30xy-  y-19x+ 1)-11

z=30*(30xy- 7y- 7x+ 2)-11

z=30*(30xy-13y-13x+ 6)-11

z=30*(30xy-17y-17x+10)-11

z=30*(30xy-23y-23x+18)-11


As expressões abaixo contém todos os números múltiplos que existem em z=30w-13 sendo os restantes elementos de z=30w-13 números primos terminados em 7

z=30*(30xy-13y+  x+ 0)-13 

z=30*(30xy-  y-17x+ 1)-13

z=30*(30xy- 7y-11x+ 3)-13

z=30*(30xy-19y-23x+15)-13


As expressões abaixo contém todos os números múltiplos que existem em z=30w-23 sendo os restantes elementos de z=30w-23 números primos terminados em 7

z=30*(30xy-23y+  x+ 0)-23 

z=30*(30xy-  y- 7x+ 1)-23 

z=30*(30xy-11y-17x+ 7)-23

z=30*(30xy-13y-19x+ 9)-23


As expressões abaixo contém todos os números múltiplos que existem em z=30w- 7 sendo os restantes elementos de z=30w- 7 números primos terminados em 3

z=30*(30xy- 7y+  x+ 0)- 7 

z=30*(30xy-  y-23x+ 1)- 7

z=30*(30xy-11y-13x+ 5)- 7

z=30*(30xy-17y-19x+11)- 7


As expressões abaixo contém todos os números múltiplos que existem em z=30w-17 sendo os restantes elementos de z=30w-17 números primos terminados em 3

z=30*(30xy-17y+  x+ 0)-17 

z=30*(30xy-  y-13x+ 1)-17

z=30*(30xy- 7y-19x+ 5)-17 

z=30*(30xy-11y-23x+ 9)-17


As expressões abaixo contém todos os números múltiplos que existem em z=30w-19 sendo os restantes elementos de z=30w-19 números primos terminados em 1

z=30*(30xy-19y+  x+ 0)-19 

z=30*(30xy-  y-11x+ 1)-19

z=30*(30xy- 7y-23x+ 6)-19

z=30*(30xy-13y-17x+ 8)-19


As expressões abaixo contém todos os números múltiplos que existem em z=30w-29 sendo os restantes elementos de z=30w-29 com w>1 números primos terminados em 1

z=30*(30xy+  y+  x+ 1)-29  

z=30*(30xy-  y-  x+ 1)-29

z=30*(30xy- 7y-13x+ 4)-29

z=30*(30xy-11y-11x+ 5)-29

z=30*(30xy-19y-19x+13)-29

z=30*(30xy-17y-23x+14)-29


Para os múltiplos de z=30w- 1 temos então

para w=30xy-  y+  x+ 0 vém x=(w- 0+  y)/(30y+ 1)

para w=30xy- 7y-17x+ 4 vém x=(w- 4+ 7y)/(30y-17)

para w=30xy-11y-19x+ 7 vém x=(w- 7+11y)/(30y-19) 

para w=30xy-13y-23x+10 vém x=(w-10+13y)/(30y-23)


Para os múltiplos de z=30w-11 temos então

para w=30xy-11y+  x+ 0 vém x=(w- 0+11y)/(30y+ 1)

para w=30xy-  y-19x+ 1 vém x=(w- 1+  y)/(30y-19)

para w=30xy- 7y- 7x+ 2 vém x=(w- 2+ 7y)/(30y- 7)

para w=30xy-13y-13x+ 6 vém x=(w- 6+13y)/(30y-13)

para w=30xy-17y-17x+10 vém x=(w-10+17y)/(30y-17)

para w=30xy-23y-23x+18 vém x=(w-18+23y)/(30y-23)


Para os múltiplos de z=30w-13 temos então

para w=30xy-13y+  x+ 0 vém x=(w- 0+13y)/(30y+ 1)

para w=30xy-  y-17x+ 1 vém x=(w- 1+  y)/(30y-17)

para w=30xy- 7y-11x+ 3 vém x=(w- 3+ 7y)/(30y-11)

para w=30xy-19y-23x+15 vém x=(w-15+19y)/(30y-23)


Para os múltiplos de z=30w-23 temos então

para w=30xy-23y+  x+ 0 vém x=(w- 0+23y)/(30y+ 1)

para w=30xy-  y- 7x+ 1 vém x=(w- 1+  y)/(30y- 7)

para w=30xy-11y-17x+ 7 vém x=(w- 7+11y)/(30y-17)

para w=30xy-13y-19x+ 9 vem x=(w- 9+13y)/(30y-19)


Para os múltiplos de z=30w- 7 temos então

para w=30xy- 7y+  x+ 0 vém x=(w- 0+ 7y)/(30y+ 1)

para w=30xy-  y-23x+ 1 vém x=(w- 1+  y)/(30y-23)

para w=30xy-11y-13x+ 5 vém x=(w- 5+11y)/(30y-13)

para w=30xy-17y-19x+11 vém x=(w-11+17y)/(30y-19)


Para os múltiplos de z=30w-17 temos então

para w=30xy-17y+  x+ 0 vém x=(w- 0+17y)/(30y+ 1)

para w=30xy-  y-13x+ 1 vém x=(w- 1+  y)/(30y-13)

para w=30xy- 7y-19x+ 5 vém x=(w- 5+ 7y)/(30y-19)

para w=30xy-11y-23x+ 9 vém x=(w- 9+11y)/(30y-23)


Para os múltiplos de z=30w-19 temos então

para w=30xy-19y+  x+ 0 vém x=(w- 0+19y)/(30y+ 1)

para w=30xy-  y-11x+ 1 vém x=(w- 1+  y)/(30y-11)

para w=30xy- 7y-23x+ 6 vém x=(w- 6+ 7y)/(30y-23)

para w=30xy-13y-17x+ 8 vém x=(w- 8+13y)/(30y-17)


Para os múltiplos de z=30w-29 temos então

para w=30xy+  y+  x+ 1 vém x=(w- 1-  y)/(30y+ 1)

para w=30xy-  y-  x+ 1 vém x=(w- 1+  y)/(30y- 1)

para w=30xy- 7y-13x+ 4 vém x=(w- 4+ 7y)/(30y-13)

para w=30xy-11y-11x+ 5 vém x=(w- 5+11y)/(30y-11)

para w=30xy-19y-19x+13 vém x=(w-13+19y)/(30y-19)

para w=30xy-17y-23x+14 vém x=(w-14+17y)/(30y-23)


Vamos agora verificar quantas operações temos de fazer para verificar que um número é primo

 Escolhemos então o número 104287

 

Um número primo terminado em 7 tem de existir ou em  z=30w-13 ou em z=30w-23

 De z=30w-13  vém w=(104287+13)/30 =3476,(6) não serve

Então de z=30w-23 vém w=(104287+23)/30=3477

 

Então as expressões abaixo contém todos os números múltiplos que existem em z=30w-23 sendo os restantes elementos de z=30w-23 números primos terminados em 7

 z=30*(30xy-23y+  x+ 0)-23 

z=30*(30xy-  y- 7x+ 1)-23 

z=30*(30xy-11y-17x+ 7)-23

z=30*(30xy-13y-19x+ 9)-23

ou seja Para os múltiplos de z=30w-23 temos então

para  w=30xy-23y+  x+ 0 vém x=(w- 0+23y)/(30y+ 1)

para w=30xy-  y- 7x+ 1 vém x=(w- 1+  y)/(30y- 7)

para w=30xy-11y-17x+ 7 vém x=(w- 7+11y)/(30y-17)

para w=30xy-13y-19x+ 9 vem x=(w- 9+13y)/(30y-19)

Como w=3477 começamos com y=1 e avançamos o valor de y até todos os resultados de x serem menores que 1

w=3477 y=     1            z=30w-23
       x=     112,9032                           
       x=     151,1739                           
       x=     267,7692                           
       x=     316,4545
w=3477 y=     2            z=30w-23
       x=     57,7541                      
       x=     65,62264                           
       x=     81,2093                      
       x=     85,21951
w=3477 y=     3            z=30w-23
       x=     38,96703                           
       x=     41,91566                           
       x=     47,9863                      
       x=     49,39437
w=3477 y=     4            z=30w-23
       x=     29,49587                           
       x=     30,79646                           
       x=     34,1165                      
       x=     34,85149
w=3477 y=     5            z=30w-23
       x=     23,78808                           
       x=     24,34266                           
       x=     26,50376                           
       x=     26,96947
w=3477 y=     6            z=30w-23
       x=     19,97238                           
       x=     20,12717                           
       x=     21,69325                           
       x=     22,02484
w=3477 y=     7            z=30w-23
       x=     17,24171                           
       x=    17,15764                           
       x=    18,37824                           
       x=    18,63351
w=3477 y=    8            z=30w-23
       x=    15,19087                           
       x=    14,95279                           
       x=    15,95516                           
       x=    16,1629
w=3477 y=    9            z=30w-23
       x=    13,5941                      
       x=    13,25095                           
       x=    14,10672                           
       x=    14,28287
w=3477 y=    10           z=30w-23
       x=    12,31561                           
       x=    11,89761                           
       x=    12,65018                           
       x=    12,80427
...
w=3477 y=    496          z=30w-23
       x=    1,000269                           
       x=    0,267061                           
       x=    0,600552                           
       x=    0,66725
w=3477 y=    497          z=30w-23
       x=    0,999799                           
       x=    0,266591                           
       x=    0,600081                           
       x=    0,666779

Então precisamos de 497*4+2=1990 operações para confirmarmos que o número 104287 é primo contra as 323 necessárias pelo método de divisão tradicional, fantástico!

O importante é que temos um novo método!

Se escolhermos o número 104647 que não é primo obtemos

Um número primo terminado em 7 tem de existir ou em  z=30w-13 ou em z=30w-23

De z=30w-13  vém w=(104647+13)/30 =3488,(6) não serve

Então de z=30w-23 vém w=(104647+23)/30=3489

Então as expressões abaixo contém todos os números múltiplos que existem em z=30w-23 sendo os restantes elementos de z=30w-23 números primos terminados em 7

z=30*(30xy-23y+  x+ 0)-23 

z=30*(30xy-  y- 7x+ 1)-23 

z=30*(30xy-11y-17x+ 7)-23

z=30*(30xy-13y-19x+ 9)-23 

ou seja Para os múltiplos de z=30w-23 temos então

para  w=30xy-23y+  x+ 0 vém x=(w- 0+23y)/(30y+ 1)

para w=30xy-  y- 7x+ 1 vém x=(w- 1+  y)/(30y- 7)

para w=30xy-11y-17x+ 7 vém x=(w- 7+11y)/(30y-17)

para w=30xy-13y-19x+ 9 vem x=(w- 9+13y)/(30y-19)

Como w=3489 começamos com y=1 e avançamos o valor de y até todos os resultados de x serem menores que y

w=3489                  y=        1                     z=30w-23
                        x=        113,2903                                             
                        x=        151,6957                                             
                        x=        268,6923                                             
                        x=        317,5455
w=3489                  y=        2                     z=30w-23
                        x=        57,95082                                             
                        x=        65,84906                                             
                        x=        81,48837                                             
                        x=        85,5122          
w=3489                  y=        3                     z=30w-23
                        x=        39,0989                                               
                        x=        42,06024                                             
                        x=        48,15068                                             
                        x=        49,56338
w=3489                  y=        4                     z=30w-23
                        x=        29,59504                                             
                        x=        30,90265                                             
                        x=        34,23301                                             
                        x=        34,9703
w=3489                  y=        5                     z=30w-23
                        x=        23,86755                                             
                        x=        24,42657                                             
                        x=        26,59398                                             
                        x=        27,06107
w=3489                  y=        6                     z=30w-23
                        x=        20,03867                                             
                        x=        20,19653                                             
                        x=        21,76687                                             
                        x=        22,09938
w=3489                  y=        7                     z=30w-23
                        x=        17,29858                                             
                        x=        17,21675                                             
                        x=        18,44041                                             
                        x=        18,69634
w=3489                  y=        8                     z=30w-23
                        x=        15,24066                                             
                        x=        15,00429                                             
                        x=        16,00897                                             
                        x=        16,21719
w=3489                  y=        9                     z=30w-23
                        x=        13,63838                                             
                        x=        13,29658                                             
                        x=        14,15415                                             
                        x=        14,33068
w=3489                  y=        10                   z=30w-23
                        x=        12,35548                                             
                        x=        11,93857                                             
                        x=        12,69258                                             
                        x=        12,84698
w=3489                  y=        11                   z=30w-23
                        x=        11,30514                                             
                        x=        10,83282                                             
                        x=        11,51118                                             
                        x=        11,64952
w=3489                  y=        12                   z=30w-23
                        x=        10,42936                                             
                        x=        9,915014                                             
                        x=        10,53644                                             
                        x=        10,66276  

Como os valores de x são todos menores que y

vamos resolver y em ordem a x e verificar

para  w=30xy-23y+  x+ 0 vém y=(w- 0-x)/(30x-23)

para w=30xy-  y- 7x+ 1 vém y=(w- 1+ 7x)/(30x- 1)

para w=30xy-11y-17x+ 7 vém y=(w- 7+17x)/(30x-11)

para w=30xy-13y-19x+ 9 vem y=(w- 9+19x)/(30y-13)

w=3489                x=           1                  z=30w-23
                      y=           498,2857                                                              
                      y=           120,5172                                                              
                      y=           184,1579                                                              
                      y=           205,8235
w=3489                x=           2                  z=30w-23
                      y=           94,24324                                                              
                      y=           59,35593                                                              
                      y=           71,7551                                                                
                      y=           74,85106
w=3489                x=           3                  z=30w-23
                      y=           52,02985                                                              
                      y=           39,42697                                                              
                      y=           44,72152                                                              
                      y=           45,93506
w=3489                x=           4                  z=30w-23
                      y=           35,92784                                                              
                      y=           29,54622                                                              
                      y=           32,56881                                                              
                      y=           33,23364
w=3489                x=           5                  z=30w-23
                      y=           27,43307                                                              
                      y=           23,6443                                                                
                      y=           25,66187                                                              
                      y=           26,09489
w=3489                x=           6                  z=30w-23
                      y=           22,18471                                                              
                      y=           19,72067                                                              
                      y=           21,2071                                                                
                      y=           21,52096
w=3489                x=           7                  z=30w-23
                      y=           18,62032                                                              
                      y=           16,92344                                                              
                      y=           18,09548                                                              
                      y=           18,3401
w=3489                x=           8                  z=30w-23
                      y=           16,04147                                                              
                      y=           14,82845                                                              
                      y=           15,79913                                                              
                      y=           16

O que me faz ter vontade de provar que quando todos os valores de x são menores que y basta procurar em y variando o x até no máximo todos os valores de y serem menores que x e assim teriamos no máximo 12*4+12*4+2=98 operações o que é bastante melhor que 323.

E sim 104647 é um número múltiplo!

Sub NumeroPrimo()

'

' NumeroPrimo Macro

'

 

'

    Dim z As Double

    z = Range("B1").Value

    If Int(z) <> z Then

       MsgBox "Valor introduzido : " & z & " não é um inteiro"

    Else

       If z = 0 Then

          MsgBox "Zero não pertence a N"

       Else

          If z = 1 Then

             MsgBox "1 não é um número Primo"

          Else

             If z = 2 Or z = 3 Or z = 5 Then

                MsgBox "O número : " & z & " é um número primo"

             Else

                Dim digito As Integer

                digito = 10 * (z / 10 - Int(z / 10))

                If digito = 0 Or digito = 2 Or digito = 4 Or digito = 6 Or digito = 8 Then

                   MsgBox "Numeros pares não são primos"

                Else

                   If digito = 5 Then

                      MsgBox "Multiplos de 5 não são números primos"

                   Else

                      If Int(z / 3) = z / 3 Then

                         MsgBox "Multiplos de 3 não são números primos"

                      Else

                         Dim w, x, y1, y2, y3, y4, y5, y6, y7, y8 As Double

                         x = 1

                         If digito = 9 Then

                            w = (z + 1) / 30

                            If w = Int(w) Then

                               GoSub P30W01

                               Exit Sub

                            Else

                               w = (z + 11) / 30

                               GoSub P30W11

                               Exit Sub

                            End If

                         Else

                            If digito = 7 Then

                               w = (z + 13) / 30

                               If w = Int(w) Then

                                  GoSub P30W13

                                  Exit Sub

                               Else

                                  w = (z + 23) / 30

                                  GoSub P30W23

                                  Exit Sub

                               End If

                            Else

                               If digito = 3 Then

                                  w = (z + 7) / 30

                                  If w = Int(w) Then

                                     GoSub P30W07

                                     Exit Sub

                                  Else

                                     w = (z + 17) / 30

                                     GoSub P30W17

                                     Exit Sub

                                  End If

                               Else

                                  If digito = 1 Then

                                     w = (z + 19) / 30

                                     If w = Int(w) Then

                                        GoSub P30W19

                                        Exit Sub

                                     Else

                                        w = (z + 29) / 30

                                        GoSub P30W29

                                        Exit Sub

                                     End If

                                  End If

                               End If

                            End If

                         End If

                      End If

                   End If

                End If

             End If

          End If

       End If

    End If

    Exit Sub

P30W01:

    y1 = 1 / 30 * ((30 * w - 1) / (30 * x + 1) + 1)

    If y1 = Int(y1) And y1 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y2 = 1 / 30 * ((30 * w - 1) / (30 * x - 17) + 7)

    If y2 = Int(y2) And y2 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y3 = 1 / 30 * ((30 * w - 1) / (30 * x - 19) + 11)

    If y3 = Int(y3) And y3 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y4 = 1 / 30 * ((30 * w - 1) / (30 * x - 23) + 13)

    If y4 = Int(y4) And y4 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y5 = 1 / 30 * ((30 * w - 1) / (30 * x - 1) - 1)

    If y5 = Int(y5) And y5 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y6 = 1 / 30 * ((30 * w - 1) / (30 * x - 7) + 17)

    If y6 = Int(y6) And y6 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y7 = 1 / 30 * ((30 * w - 1) / (30 * x - 11) + 19)

    If y7 = Int(y7) And y7 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y8 = 1 / 30 * ((30 * w - 1) / (30 * x - 13) + 23)

    If y8 = Int(y8) And y8 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    While y1 >= x Or y2 >= x Or y3 >= x Or y4 >= x Or y5 >= x Or y6 >= x Or y7 >= x Or y8 >= x

       x = x + 1

       y1 = 1 / 30 * ((30 * w - 1) / (30 * x + 1) + 1)

       If y1 = Int(y1) And y1 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y2 = 1 / 30 * ((30 * w - 1) / (30 * x - 17) + 7)

       If y2 = Int(y2) And y2 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y3 = 1 / 30 * ((30 * w - 1) / (30 * x - 19) + 11)

       If y3 = Int(y3) And y3 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y4 = 1 / 30 * ((30 * w - 1) / (30 * x - 23) + 13)

       If y4 = Int(y4) And y4 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y5 = 1 / 30 * ((30 * w - 1) / (30 * x - 1) - 1)

       If y5 = Int(y5) And y5 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y6 = 1 / 30 * ((30 * w - 1) / (30 * x - 7) + 17)

       If y6 = Int(y6) And y6 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y7 = 1 / 30 * ((30 * w - 1) / (30 * x - 11) + 19)

       If y7 = Int(y7) And y7 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y8 = 1 / 30 * ((30 * w - 1) / (30 * x - 13) + 23)

       If y8 = Int(y8) And y8 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

    Wend

    MsgBox "O número : " & z & " é um número primo"

    Return

P30W11:

    y1 = 1 / 30 * ((30 * w - 11) / (30 * x + 1) + 11)

    If y1 = Int(y1) And y1 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y2 = 1 / 30 * ((30 * w - 11) / (30 * x - 19) + 1)

    If y2 = Int(y2) And y2 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y3 = 1 / 30 * ((30 * w - 11) / (30 * x - 7) + 7)

    If y3 = Int(y3) And y3 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y4 = 1 / 30 * ((30 * w - 11) / (30 * x - 13) + 13)

    If y4 = Int(y4) And y4 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y5 = 1 / 30 * ((30 * w - 11) / (30 * x - 17) + 17)

    If y5 = Int(y5) And y5 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y6 = 1 / 30 * ((30 * w - 11) / (30 * x - 23) + 23)

    If y6 = Int(y6) And y6 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y7 = 1 / 30 * ((30 * w - 11) / (30 * x - 11) - 1)

    If y7 = Int(y7) And y7 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y8 = 1 / 30 * ((30 * w - 11) / (30 * x - 11) + 19)

    If y8 = Int(y8) And y8 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    While y1 >= x Or y2 >= x Or y3 >= x Or y4 >= x Or y5 >= x Or y6 >= x Or y7 >= x Or y8 >= x

       x = x + 1

       y1 = 1 / 30 * ((30 * w - 11) / (30 * x + 1) + 11)

       If y1 = Int(y1) And y1 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y2 = 1 / 30 * ((30 * w - 11) / (30 * x - 19) + 1)

       If y2 = Int(y2) And y2 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y3 = 1 / 30 * ((30 * w - 11) / (30 * x - 7) + 7)

       If y3 = Int(y3) And y3 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y4 = 1 / 30 * ((30 * w - 11) / (30 * x - 13) + 13)

       If y4 = Int(y4) And y4 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y5 = 1 / 30 * ((30 * w - 11) / (30 * x - 17) + 17)

       If y5 = Int(y5) And y5 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y6 = 1 / 30 * ((30 * w - 11) / (30 * x - 23) + 23)

       If y6 = Int(y6) And y6 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y7 = 1 / 30 * ((30 * w - 11) / (30 * x - 11) - 1)

       If y7 = Int(y7) And y7 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y8 = 1 / 30 * ((30 * w - 11) / (30 * x - 11) + 19)

       If y8 = Int(y8) And y8 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

    Wend

    MsgBox "O número : " & z & " é um número primo"

    Return

P30W13:

    y1 = 1 / 30 * ((30 * w - 13) / (30 * x + 1) + 13)

    If y1 = Int(y1) And y1 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y2 = 1 / 30 * ((30 * w - 13) / (30 * x - 17) + 1)

    If y2 = Int(y2) And y2 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y3 = 1 / 30 * ((30 * w - 13) / (30 * x - 11) + 7)

    If y3 = Int(y3) And y3 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y4 = 1 / 30 * ((30 * w - 13) / (30 * x - 23) + 19)

    If y4 = Int(y4) And y4 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y5 = 1 / 30 * ((30 * w - 13) / (30 * x - 13) - 1)

    If y5 = Int(y5) And y5 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y6 = 1 / 30 * ((30 * w - 13) / (30 * x - 1) + 17)

    If y6 = Int(y6) And y6 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y7 = 1 / 30 * ((30 * w - 13) / (30 * x - 7) + 11)

    If y7 = Int(y7) And y7 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y8 = 1 / 30 * ((30 * w - 13) / (30 * x - 19) + 23)

    If y8 = Int(y8) And y8 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    While y1 >= x Or y2 >= x Or y3 >= x Or y4 >= x Or y5 >= x Or y6 >= x Or y7 >= x Or y8 >= x

       x = x + 1

       y1 = 1 / 30 * ((30 * w - 13) / (30 * x + 1) + 13)

       If y1 = Int(y1) And y1 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y2 = 1 / 30 * ((30 * w - 13) / (30 * x - 17) + 1)

       If y2 = Int(y2) And y2 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y3 = 1 / 30 * ((30 * w - 13) / (30 * x - 11) + 7)

       If y3 = Int(y3) And y3 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y4 = 1 / 30 * ((30 * w - 13) / (30 * x - 23) + 19)

       If y4 = Int(y4) And y4 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y5 = 1 / 30 * ((30 * w - 13) / (30 * x - 13) - 1)

       If y5 = Int(y5) And y5 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y6 = 1 / 30 * ((30 * w - 13) / (30 * x - 1) + 17)

       If y6 = Int(y6) And y6 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y7 = 1 / 30 * ((30 * w - 13) / (30 * x - 7) + 11)

       If y7 = Int(y7) And y7 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y8 = 1 / 30 * ((30 * w - 13) / (30 * x - 19) + 23)

       If y8 = Int(y8) And y8 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

    Wend

    MsgBox "O número : " & z & " é um número primo"

    Return

P30W23:

    y1 = 1 / 30 * ((30 * w - 23) / (30 * x + 1) + 23)

    If y1 = Int(y1) And y1 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y2 = 1 / 30 * ((30 * w - 23) / (30 * x - 7) + 1)

    If y2 = Int(y2) And y2 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y3 = 1 / 30 * ((30 * w - 23) / (30 * x - 17) + 11)

    If y3 = Int(y3) And y3 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y4 = 1 / 30 * ((30 * w - 23) / (30 * x - 19) + 13)

    If y4 = Int(y4) And y4 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y5 = 1 / 30 * ((30 * w - 23) / (30 * x - 23) - 1)

    If y5 = Int(y5) And y5 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y6 = 1 / 30 * ((30 * w - 23) / (30 * x - 1) + 7)

    If y6 = Int(y6) And y6 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y7 = 1 / 30 * ((30 * w - 23) / (30 * x - 11) + 17)

    If y7 = Int(y7) And y7 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y8 = 1 / 30 * ((30 * w - 23) / (30 * x - 13) + 19)

    If y8 = Int(y8) And y8 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    While y1 >= x Or y2 >= x Or y3 >= x Or y4 >= x Or y5 >= x Or y6 >= x Or y7 >= x Or y8 >= x

       x = x + 1

       y1 = 1 / 30 * ((30 * w - 23) / (30 * x + 1) + 23)

       If y1 = Int(y1) And y1 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y2 = 1 / 30 * ((30 * w - 23) / (30 * x - 7) + 1)

       If y2 = Int(y2) And y2 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y3 = 1 / 30 * ((30 * w - 23) / (30 * x - 17) + 11)

       If y3 = Int(y3) And y3 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y4 = 1 / 30 * ((30 * w - 23) / (30 * x - 19) + 13)

       If y4 = Int(y4) And y4 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y5 = 1 / 30 * ((30 * w - 23) / (30 * x - 23) - 1)

       If y5 = Int(y5) And y5 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y6 = 1 / 30 * ((30 * w - 23) / (30 * x - 1) + 7)

       If y6 = Int(y6) And y6 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y7 = 1 / 30 * ((30 * w - 23) / (30 * x - 11) + 17)

       If y7 = Int(y7) And y7 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y8 = 1 / 30 * ((30 * w - 23) / (30 * x - 13) + 19)

       If y8 = Int(y8) And y8 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

    Wend

    MsgBox "O número : " & z & " é um número primo"

    Return

P30W07:

    y1 = 1 / 30 * ((30 * w - 7) / (30 * x + 1) + 7)

    If y1 = Int(y1) And y1 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y2 = 1 / 30 * ((30 * w - 7) / (30 * x - 23) + 1)

    If y2 = Int(y2) And y2 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y3 = 1 / 30 * ((30 * w - 7) / (30 * x - 13) + 11)

    If y3 = Int(y3) And y3 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y4 = 1 / 30 * ((30 * w - 7) / (30 * x - 19) + 17)

    If y4 = Int(y4) And y4 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y5 = 1 / 30 * ((30 * w - 7) / (30 * x - 7) - 1)

    If y5 = Int(y5) And y5 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y6 = 1 / 30 * ((30 * w - 7) / (30 * x - 1) + 23)

    If y6 = Int(y6) And y6 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y7 = 1 / 30 * ((30 * w - 7) / (30 * x - 11) + 13)

    If y7 = Int(y7) And y7 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y8 = 1 / 30 * ((30 * w - 7) / (30 * x - 17) + 19)

    If y8 = Int(y8) And y8 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    While y1 >= x Or y2 >= x Or y3 >= x Or y4 >= x Or y5 >= x Or y6 >= x Or y7 >= x Or y8 >= x

       x = x + 1

       y1 = 1 / 30 * ((30 * w - 7) / (30 * x + 1) + 7)

       If y1 = Int(y1) And y1 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y2 = 1 / 30 * ((30 * w - 7) / (30 * x - 23) + 1)

       If y2 = Int(y2) And y2 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y3 = 1 / 30 * ((30 * w - 7) / (30 * x - 13) + 11)

       If y3 = Int(y3) And y3 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y4 = 1 / 30 * ((30 * w - 7) / (30 * x - 19) + 17)

       If y4 = Int(y4) And y4 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y5 = 1 / 30 * ((30 * w - 7) / (30 * x - 7) - 1)

       If y5 = Int(y5) And y5 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y6 = 1 / 30 * ((30 * w - 7) / (30 * x - 1) + 23)

       If y6 = Int(y6) And y6 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y7 = 1 / 30 * ((30 * w - 7) / (30 * x - 11) + 13)

       If y7 = Int(y7) And y7 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y8 = 1 / 30 * ((30 * w - 7) / (30 * x - 17) + 19)

       If y8 = Int(y8) And y8 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

    Wend

    MsgBox "O número : " & z & " é um número primo"

    Return

P30W17:

    y1 = 1 / 30 * ((30 * w - 17) / (30 * x + 1) + 23)

    If y1 = Int(y1) And y1 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y2 = 1 / 30 * ((30 * w - 17) / (30 * x - 7) + 1)

    If y2 = Int(y2) And y2 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y3 = 1 / 30 * ((30 * w - 17) / (30 * x - 17) + 11)

    If y3 = Int(y3) And y3 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y4 = 1 / 30 * ((30 * w - 17) / (30 * x - 19) + 13)

    If y4 = Int(y4) And y4 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y5 = 1 / 30 * ((30 * w - 17) / (30 * x - 23) - 1)

    If y5 = Int(y5) And y5 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y6 = 1 / 30 * ((30 * w - 17) / (30 * x - 1) + 7)

    If y6 = Int(y6) And y6 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y7 = 1 / 30 * ((30 * w - 17) / (30 * x - 11) + 17)

    If y7 = Int(y7) And y7 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y8 = 1 / 30 * ((30 * w - 17) / (30 * x - 13) + 19)

    If y8 = Int(y8) And y8 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    While y1 >= x Or y2 >= x Or y3 >= x Or y4 >= x Or y5 >= x Or y6 >= x Or y7 >= x Or y8 >= x

       x = x + 1

       y1 = 1 / 30 * ((30 * w - 17) / (30 * x + 1) + 23)

       If y1 = Int(y1) And y1 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y2 = 1 / 30 * ((30 * w - 17) / (30 * x - 7) + 1)

       If y2 = Int(y2) And y2 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y3 = 1 / 30 * ((30 * w - 17) / (30 * x - 17) + 11)

       If y3 = Int(y3) And y3 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y4 = 1 / 30 * ((30 * w - 17) / (30 * x - 19) + 13)

       If y4 = Int(y4) And y4 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y5 = 1 / 30 * ((30 * w - 17) / (30 * x - 23) - 1)

       If y5 = Int(y5) And y5 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y6 = 1 / 30 * ((30 * w - 17) / (30 * x - 1) + 7)

       If y6 = Int(y6) And y6 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y7 = 1 / 30 * ((30 * w - 17) / (30 * x - 11) + 17)

       If y7 = Int(y7) And y7 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y8 = 1 / 30 * ((30 * w - 17) / (30 * x - 13) + 19)

       If y8 = Int(y8) And y8 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

    Wend

    MsgBox "O número : " & z & " é um número primo"

    Return

P30W19:

    y1 = 1 / 30 * ((30 * w - 19) / (30 * x + 1) + 19)

    If y1 = Int(y1) And y1 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y2 = 1 / 30 * ((30 * w - 19) / (30 * x - 11) + 1)

    If y2 = Int(y2) And y2 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y3 = 1 / 30 * ((30 * w - 19) / (30 * x - 23) + 7)

    If y3 = Int(y3) And y3 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y4 = 1 / 30 * ((30 * w - 19) / (30 * x - 17) + 13)

    If y4 = Int(y4) And y4 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y5 = 1 / 30 * ((30 * w - 19) / (30 * x - 19) - 1)

    If y5 = Int(y5) And y5 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y6 = 1 / 30 * ((30 * w - 19) / (30 * x - 1) + 11)

    If y6 = Int(y6) And y6 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y7 = 1 / 30 * ((30 * w - 19) / (30 * x - 7) + 23)

    If y7 = Int(y7) And y7 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y8 = 1 / 30 * ((30 * w - 19) / (30 * x - 13) + 17)

    If y8 = Int(y8) And y8 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    While y1 >= x Or y2 >= x Or y3 >= x Or y4 >= x Or y5 >= x Or y6 >= x Or y7 >= x Or y8 >= x

       x = x + 1

       y1 = 1 / 30 * ((30 * w - 19) / (30 * x + 1) + 19)

       If y1 = Int(y1) And y1 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y2 = 1 / 30 * ((30 * w - 19) / (30 * x - 11) + 1)

       If y2 = Int(y2) And y2 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y3 = 1 / 30 * ((30 * w - 19) / (30 * x - 23) + 7)

       If y3 = Int(y3) And y3 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y4 = 1 / 30 * ((30 * w - 19) / (30 * x - 17) + 13)

       If y4 = Int(y4) And y4 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y5 = 1 / 30 * ((30 * w - 19) / (30 * x - 19) - 1)

       If y5 = Int(y5) And y5 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y6 = 1 / 30 * ((30 * w - 19) / (30 * x - 1) + 11)

       If y6 = Int(y6) And y6 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y7 = 1 / 30 * ((30 * w - 19) / (30 * x - 7) + 23)

       If y7 = Int(y7) And y7 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y8 = 1 / 30 * ((30 * w - 19) / (30 * x - 13) + 17)

       If y8 = Int(y8) And y8 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

    Wend

    MsgBox "O número : " & z & " é um número primo"

    Return

P30W29:

    y1 = 1 / 30 * ((30 * w - 29) / (30 * x + 1) - 1)

    If y1 = Int(y1) And y1 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y2 = 1 / 30 * ((30 * w - 29) / (30 * x - 1) + 1)

    If y2 = Int(y2) And y2 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y3 = 1 / 30 * ((30 * w - 29) / (30 * x - 13) + 7)

    If y3 = Int(y3) And y3 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y4 = 1 / 30 * ((30 * w - 29) / (30 * x - 11) + 11)

    If y4 = Int(y4) And y4 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y5 = 1 / 30 * ((30 * w - 29) / (30 * x - 19) + 19)

    If y5 = Int(y5) And y5 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y6 = 1 / 30 * ((30 * w - 29) / (30 * x - 23) + 17)

    If y6 = Int(y6) And y6 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y7 = 1 / 30 * ((30 * w - 29) / (30 * x - 7) + 13)

    If y7 = Int(y7) And y7 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    y8 = 1 / 30 * ((30 * w - 29) / (30 * x - 17) + 23)

    If y8 = Int(y8) And y8 >= x Then

       MsgBox "O número : " & z & " não é um número primo"

       Return

    End If

    While y1 >= x Or y2 >= x Or y3 >= x Or y4 >= x Or y5 >= x Or y6 >= x Or y7 >= x Or y8 >= x

       x = x + 1

       y1 = 1 / 30 * ((30 * w - 29) / (30 * x + 1) - 1)

       If y1 = Int(y1) And y1 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y2 = 1 / 30 * ((30 * w - 29) / (30 * x - 1) + 1)

       If y2 = Int(y2) And y2 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y3 = 1 / 30 * ((30 * w - 29) / (30 * x - 13) + 7)

       If y3 = Int(y3) And y3 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y4 = 1 / 30 * ((30 * w - 29) / (30 * x - 11) + 11)

       If y4 = Int(y4) And y4 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y5 = 1 / 30 * ((30 * w - 29) / (30 * x - 19) + 19)

       If y5 = Int(y5) And y5 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y6 = 1 / 30 * ((30 * w - 29) / (30 * x - 23) + 17)

       If y6 = Int(y6) And y6 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y7 = 1 / 30 * ((30 * w - 29) / (30 * x - 7) + 13)

       If y7 = Int(y7) And y7 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

       y8 = 1 / 30 * ((30 * w - 29) / (30 * x - 17) + 23)

       If y8 = Int(y8) And y8 >= x Then

          MsgBox "O número : " & z & " não é um número primo"

          Return

       End If

    Wend

    MsgBox "O número : " & z & " é um número primo"

    Return

End Sub


segunda-feira, 23 de dezembro de 2019

Eis a igualdade mais inútil que eu já obtive para o estudo de sucessões







E podemos definir a sucessão alfa relativa à sucessão u como sendo


terça-feira, 19 de novembro de 2019

Como se distribuem os números primos entre os números naturais

Dizer que entre os valores Un=30n+1 e Vn=30n+29, para um determinada ordem n existem no máximo 8 números primos demonstra-se de:

1) a união das sucessões Un=30n-29 e Vn=30n-19 contém todos os números primos terminados em 1
2) a união das sucessões Un=30n-17 e Vn=30n-7 contém todos os números primos terminados em 3 com excepção do número primo 3
3) a união das sucessões Un=30n-23 e Vn=30n-13 contém todos os números primos terminados em 7
4) a união das sucessões Un=30n-11 e Vn=30n-1 contém todos os números primos terminados em 9
5) os números primos 2, 3 e 5 são números menores que 31 ou seja números minorantes da sucessão Un=30n+1

Mas as sucessões Un=30n-29, Un=30n-23, Un=30n-19, Un=30n-17, Un=30n-13, Un=30m-11, Un=30n-7 e Un=30n-1,
contém a partir da ordem de um número resultante da sucessão p,
ou da ordem de um número resultante da sucessão que seja um número múltiplo de p,
de p em p elementos de ordem da sucessão,
um número resultante da sucessão que é um número múltiplo de p.





























Cada uma das 8 sucessões contém múltiplos de 7, de 7 em 7 elementos da sucessão e
para a sucessão Un=30n-11 o conjunto de múltiplos de 7 é dado por n pertencente a { 2,  9, 16, ...} ou seja n=7m-5
para a sucessão Un=30n-13 o conjunto de múltiplos de 7 é dado por n pertencente a { 3, 10, 17, ...} ou seja n=7m-4
para a sucessão Un=30n-29 o conjunto de múltiplos de 7 é dado por n pertencente a { 4, 11, 18, ...} ou seja n=7m-3
para a sucessão Un=30n-17 o conjunto de múltiplos de 7 é dado por n pertencente a { 5, 12, 19, ...} ou seja n=7m-2
para a sucessão Un=30n-19 o conjunto de múltiplos de 7 é dado por n pertencente a { 6, 13, 20, ...} ou seja n=7m-1
para a sucessão Un=30n-7  o conjunto de múltiplos de 7 é dado por n pertencente a { 7, 14, 21, ...} ou seja n=7m
para a sucessão Un=30n-23 o conjunto de múltiplos de 7 é dado por n pertencente a { 8, 15, 22, ...} ou seja n=7m+1

Porque para n=1 o conjunto contém o número 1 que não é um número primo,
podemos concluir que para qualquer n>1 um dos elementos de uma das sucessões acima é obrigatoriamente um número múltiplo de 7

Fica então demonstrado que entre os valores Un=30n+1 e Vn=30n+30,
para qualquer número de ordem n que seja determinado, existem no máximo 7 números primos.

Ou seja, que com excepção dos primeiros 30 números naturais [1, 30], 
todos os outros grupos de trinta números naturais subsequentes,

definidos por [30n, 30n+30], contém no máximo 7 números primos.

Ou seja a quantidade dos primos p em relação à quantidade de números naturais n, 
é inferior a 7 números primos por cada 30 números naturais 
ou seja a cardinalidade dos números naturais sobre a cardinalidade dos números primos é
estritamente superior a 30/7 ou seja superior a 4,(285714) números naturais por cada número primo.

A partir do estudo dos números múltiplos dos números primos existentes na sucessão un=2x3x5n-29, deduz-se que a probabilidade de um número natural n ser primo pode ser dada por








Que tende por hipótese  para zero, quando n tende para infinito e então







Como



fazendo








Podemos reescrever o multiplicatório relacionando-o com esta sucessão que é uma função de pk e reescrever o somatório do múltiplicatório na forma


E de 1/7+(1-1/7)/11+(1-1/7)(1-1/11)/13+(1-1/7)(1-1/11)(1-1/13)/17+…=1

A probabilidade de um número natural maior ou igual a 7 ser um número primo vém então aproximadamente igual a 


E resolvendo o somatório em função de alfa obtemos








E considerando pk≥7 podemos ajustar α(pk) a uma sucessão aproximada do tipo




Em que a1≈0,00025, a2≈0,99877, a3≈0,00127,  a4≈0,448154823950443 e a5≈0,82772
Como todos os parâmetros acima afectam alfa linearmente, podemos fixar 4 e aproximar alfa pela variação de apenas um dos parâmetros.
Assim escolhemos para este efeito o parâmetro a4.

Podemos ainda escrever alfa na forma






Em que x é a  maior solução de entre as duas soluções da seguinte função quadrática





A aproximação da sucessão acima à sucessão real de alfa verifica a inequação abaixo








Ou seja

























terça-feira, 6 de março de 2018

Análise da razão entre os números inteiros e os números primos #N/#P=?


Análise da razão entre os números inteiros e os números primos #N/#P=?

n/2 - quantidade dos números pares no conjunto dos inteiros logo é a cardinalidade dos números inteiros que são pares.

n/6 - quantidade dos múltiplos de 3 que não são múltiplos de 2 nos inteiros logo é a cardinalidade dos números inteiros que são múltiplos de 3 e não são pares.

n/15 - quantidade dos múltiplos de 5 que não são nem múltiplos de 2 nem múltiplos de 3 nos inteiros logo é a cardinalidade dos números inteiros que são múltiplos de 5 e que não são nem múltiplos de 2 nem múltiplos de 3.

4n/1065 - quantidade de múltiplos de 71 que não são nem múltiplos de 2 nem de 3 nem de 5 nos números inteiros logo é a cardinalidade dos números inteiros que são múltiplos de 71 e que não são múltiplos nem de 2 nem de 3 nem de 5.

Existem 2130/30*8-1=567 sucessões do tipo 2130n-m, em que m é um ímpar menor que 2130, que contém cada uma delas primos terminados ou em 1 ou em 3 ou em 7 ou em 9 e que contém ainda números múltiplos de todos os primos que são diferentes de 2, 3, 5 e 71.

Estas sucessões são todas similares na forma como representam o menor factor múltiplo de cada um dos números não primos destas sucessões, sendo que estes factores são sempre diferentes de 2, 3, 5 e de 71.

Em cada uma destas sucessões em cada intervalo de 7 números existe um múltiplo de 7.

Em cada uma destas sucessões em cada intervalo de 11 números existe um múltiplo de 11.

Em cada uma destas sucessões em cada intervalo de 13 números existe um múltiplo de 13.  
   
E de uma forma geral podemos dizer que para qualquer uma destas sucessões em cada intervalo de p números existe um múltiplo de p para p primo diferente de 2, 3, 5 e 71.

É de notar que cada um destes múltiplos de p pode ser ainda múltiplo de um ou de mais outros números primos o que dificulta o cálculo da sua cardinalidade.

O conjunto dos números que não são primos está incluído nos números naturais e tem de ter uma cardinalidade inferior à cardinalidade dos números naturais.

A quantidade dos factores múltiplos mais pequenos de cada um dos números não primos destas sucessões, pode ser facilmente obtida em função do número de ordem a partir do seguinte desenvolvimento.

=1/7
=1/11-1/7/11
=1/13-1/7/13-1/11/13+1/7/11/13
=1/17-1/7/17-1/11/17+1/7/11/17-1/13/17+1/7/13/17+1/11/13/17-1/7/11/13/17
=1/19-1/7/19-1/11/19+1/7/11/19-1/13/19+1/7/13/19+1/11/13/19-1/7/11/13/19-1/17/19+1/7/17/19+1/11/17/19+1/13/17/19-1/7/11/17/19-1/7/13/17/19-1/11/13/17/19+1/7/11/13/17/19
=1/23-1/7/23-1/11/23+1/7/11/23-1/13/23+1/7/13/23+1/11/13/23-1/7/11/13/23-1/17/23+1/7/17/23+1/11/17/23+1/13/17/23-1/7/11/17/23-1/7/13/17/23-1/11/13/17/23+1/7/11/13/17/23-1/19/23+1/7/19/23+1/11/19/23+1/13/19/23+1/17/19/23-1/7/11/19/23-1/7/13/19/23-1/7/17/19/23-1/11/13/19/23-1/11/17/19/23-1/13/17/19/23+1/7/11/13/19/23+1/7/11/17/19/23+1/7/13/17/19/23+1/11/13/17/19/23-1/7/11/13/17/19/23
...

Como

f(k)=t(k)(1-1/p(k))

Sendo

t(1)=1/p(1)

E como

t(k+1)=p(k)*t(k)/p(k+1)

Então

f(k+1)=p(k)*t(k)/p(k+1)(1-1/p(k+1))
















sábado, 14 de janeiro de 2017

Problema do carteiro

O problema do carteiro é dos mais simples de resolver porque o caminho óptimo se obtém sempre da mesma maneira.

Devem ser definidas fronteiras de forma a contornarem os constrangimentos.

Uma fronteira ao contornar um constrangimento herda os pontos do raio que em teoria pertenceriam a fronteiras mais interiores.

Um constrangimento total é o que obriga a um percurso pelo raio até à origem e neste caso a fronteira deve passar a conter também o ponto da origem.

As  fronteiras devem ser classificadas por ordem de exterioridade sendo a fronteira mais externa a 1 e o ponto de origem a enésima fronteira, chamamos a estas fronteiras, tenham elas a forma que tiverem círculos do carteiro.

O conjunto das fronteiras definidos deve passar por todos os pontos que se pretendam alcançar.

Cada fronteira definida só pode conter os seus próprios pontos ou o ponto de origem e mais nenhum ponto de outra fronteira.

Solução do carteiro

O carteiro começa por ir até ao primeiro círculo do carteiro, pelo raio do carteiro mais curto possível, e que atravesse o menor número de círculos do carteiro, desde o enésimo, a origem,  até ao primeiro, o círculo do carteiro número 1.

Depois percorre o círculo do carteiro num dos sentidos possíveis, o que é indiferente, ou o horário ou o anti-horário.

Quando a próxima casa, for uma das casas já visitadas, então percorre a perpendicular a este círculo, o raio, até ao primeiro ponto do novo círculo mais interior, e percorre este círculo no sentido contrário ao sentido utilizado para percorrer o círculo anterior, até que a próxima casa seja uma das casas já visitados, e repete o processo até chegar à origem e ter todas as casas já visitadas.

O pior cenário, é o caso dos constrangimentos serem tantos que todos os movimentos se façam pelos raios e não pelos círculos, e neste caso e só neste caso, o número de passagens pela casa de origem será igual ao dobro do número de pontos da fronteira exterior, sem contar com o ponto de origem, a percorrer.

No melhor cenário a casa de origem só será ponto de partida e de chegada e não estará contido por nenhum círculo do carteiro.

A demonstração passa por serem  verdadeiras as seguintes afirmações:
  1.   A curva mais compacta que existe num plano é o circulo;
  2.   A distância mais curta entre dois círculos é a diferença entre os seus raios;
Acrescentar um novo ponto de passagem

Se já estiver estabelecido um percurso para o carteiro, ao adicionar-se uma casa ao percurso, a solução mais viável para refazer o percurso do carteiro é adicionar essa casa a um dos círculos do carteiro previamente definidos e reordenar os pontos desse círculo.

Ou seja o problema do carteiro é linear e não exponencial, porque pode ser reduzido à soma de funções lineares como o é a função do perímetro, funções do tipo 2πr, ou seja, em que os números de casas de cada círculo é proporcional ao raio desse círculo, sendo que se a casa a acrescentar for de uma fronteira mais exterior se tem de renumerar no máximo todos os pontos dessa fronteira, e apenas os pontos dessa fronteira.