Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dataset

Mínimo Múlitiplo Comum (MMC)

Recommended Posts

Salve galera ...

 

Preciso achar o MMC de uma lista de números. Tentei achar alguma coisa pronta na net pra economizar meu tempo, mas nada.

 

Algúem tem aí um exemplo ?

 

Estou gerando a Média escolar. São quatro os tipos de média.

 

  • Média simples Aritmética
  • Média Ponderada
  • Média Geométrica
  • Média Harmônica

Falta apenas a Média Harmônica, ela usa o MMC. Parei num ponto onde só posso continuar a desenvolver o script se eu achar o MMC.

 

Exemplo:

As notas do aluno foram: 2 6 e 8

O número 24 é o MMC de 2, 6, 8. Confira na imagem. Só posso continuar se eu achar o MMC.

Imagem Postada

 

Alguém tem um exemplo de MMC ou Média Harmônica ?

 

Se tiver o MMC já ajuda. Após terminar de montar a Média Harmônica eu posto como ficou o script.

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade você terá que ter a fórmula matematica e converter para ASP, será pura matemática

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma dica infalível, crie primeiro um algorítimo depois transcreva para o ASP(vbs,jscrit)

Compartilhar este post


Link para o post
Compartilhar em outros sites

ae cara consegui! fiz uma função que tira o MMC de números!

 

<%
function isPrimo(numero)
contador = 2
primo = true
do until contador = numero
if (numero mod contador) = 0 then
primo = false
exit do
else
contador = contador + 1
end if
loop
isPrimo = primo
end function

function isDivisivel(n1,n2)
if clng(n1/n2) <> cdbl(n1/n2) then
isDivisivel = false
else
isDivisivel = true
end if
end function

function decompor(numero)
primos = "2"
temp = ""
for i=3 to numero
if isPrimo(i) then
primos = primos & ","&i
end if
next
primos = split(primos,",")
for each primo in primos
if isDivisivel(numero,primo) then
do until isDivisivel(numero,primo) = false
numero = numero/primo
if not temp = "" then
temp = temp&","
end if
temp = temp&primo
loop
end if
next
decompor = temp
end function

function MMC(numeros)
numeros = split(numeros,",")
dim decomposto
redim decomposto(ubound(numeros))
a = 0
for each n in numeros
if isPrimo(n) then
decomposto(a) = n
else
decomposto(a) = decompor(n)
end if
a=a+1
next
finais = ""
for i = 0 to ubound(decomposto)
decomposto(i) = split(decomposto(i),",")
next
for h = 0 to ubound(decomposto)
for j = 0 to ubound(decomposto(h))
num = decomposto(h)(j)
if not num = "" then
if not finais = "" then
finais = finais&","
end if
finais = finais&num
for k = 0 to ubound(decomposto)
for l = 0 to ubound(decomposto(k))
if decomposto(k)(l) = num then
decomposto(k)(l) = ""
exit for
end if
next
next
end if
next
next
resultado = 1
finais = split(finais,",")
for p = 0 to ubound(finais)
resultado = resultado*finais(p)
next
MMC = resultado
end function



'----------------------------------
numeros = "2,2,6,8" 'aqui é só ir adicionando números
response.write MMC(numeros)
%>

é isso aí, vou por no lab de scripts

 

Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara isso é matemática pura mesmo

 

precisará separar para cada numero os seus divisores primos como faria se fosse na mao e depois pegar o maior fator de cada divisor para calcular o MMC

 

no seu exemplo passando 2, 6 e 8

 

Precisa ir dividindo cada um pelos numeros primos até terminar de destrinchar cada um

 

2 = 2

 

6 = 2 * 3

 

8 = 2 * 2 * 2

 

quanto tiver fatorado tudo verá que o 2 elevado a 3 é o correto e como só tem o 3 o MMC será 2³ * 3 no caso o seu 24 falado lá em cima

 

nisso certamente usará a função mod para verificar o resto da divisão e ver se um numero primo de fato é divisor de um dos seus numeros passados

 

e precisará armazenar os resultados em algum lugar, um array sugiro

 

o resto é matematica

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se foi coincidente ou proposital mas o augustoclaro acaba de lhe ajudar bastante

 

MMC de numeros

Compartilhar este post


Link para o post
Compartilhar em outros sites

juro que não tinha visto o seu post aqui

 

muito bom

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado galera.

 

Augsto... vou aplicar na minha necessidade. Tomara que de certo. Obrigado pela ajuda. Show de bola.

 

Assim que eu tiver concluído, posto aqui os resultados.

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

otimiza o code, deixa ele com mais comentários

Compartilhar este post


Link para o post
Compartilhar em outros sites


<%

function isPrimo(numero) 'Verifica se um número é primo

contador = 2

primo = true

do until contador = numero

if (numero mod contador) = 0 then 'Caso a divisão dele com qualquer número emntre 2 e ele mesmo dê resto 0, então ele não [e primo

primo = false

exit do

else

contador = contador + 1

end if

loop

isPrimo = primo

end function

 

function isDivisivel(n1,n2) 'Verifica se um número é divisível por outro

if clng(n1/n2) <> cdbl(n1/n2) then

isDivisivel = false

else

isDivisivel = true

end if

end function

 

function decompor(numero) 'Decompõe um número

primos = ""

temp = ""

for i=2 to numero

if isPrimo(i) then 'Verific se um número é primo, se for, coloca-o na variável "primos"

if not primos="" then

primos=primos&","

end if

primos = primos & i

end if

next

primos = split(primos,",") 'Transofmra em uma array

for each primo in primos

if isDivisivel(numero,primo) then

do until isDivisivel(numero,primo) = false 'Divide o máximo de vezes possível o número por cada número primo

numero = numero/primo

if not temp = "" then

temp = temp&","

end if

temp = temp&primo

loop

end if

next

decompor = temp

end function

 

function MMC(numeros)

numeros = split(numeros,",") 'Transforma os números em array

dim decomposto

redim decomposto(ubound(numeros))

a = 0

for each n in numeros 'Decompõe os números e coloca os números já decompostos em uma array

if isPrimo(n) then

decomposto(a) = n

else

decomposto(a) = decompor(n)

end if

a=a+1

next

finais = ""

for i = 0 to ubound(decomposto) 'Transforma todos os decompostos dentro das arrays em arrays.

decomposto(i) = split(decomposto(i),",")

next

for h = 0 to ubound(decomposto) 'Fazer em todos da array decomposto...

for j = 0 to ubound(decomposto(h)) 'Fazer em todos das arrays da array decomposto...

num = decomposto(h)(j) 'pega o número

if not num = "" then 'Verifica se o número já foi usado, se não...

if not finais = "" then 'Verifica se adiciona vígula ou não

finais = finais&","

end if

finais = finais&num 'Coloca o número na var finais

for k = 0 to ubound(decomposto) 'Fazer em todos da array decomposto...

for l = 0 to ubound(decomposto(k)) 'Fazer em todos das arrays da array decomposto... Aqui o script vai tirar o número usado uma vez de cada array de decomposto, se existir

if decomposto(k)(l) = num then

decomposto(k)(l) = ""

exit for

end if

next

next

end if

next

next

resultado = 1

finais = split(finais,",")

for p = 0 to ubound(finais) 'Multiplica os números de finais

resultado = resultado*finais(p)

next

MMC = resultado 'Retorna o resultado

end function

 

 

 

'----------------------------------

numeros = "2,2,6,8"

response.write MMC(numeros)

%>

 

Aí está =D

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.