private void MuestraDeOperacionesConFactoresPrimos() { uint n = 50, r = 7; FactoresPrimos fp1 = new FactoresPrimos(ofp.FactorialEnPrimos(n - 1)); fp1 = fp1 * n; // n! fp1 = (fp1 * (n + 10)) / (n + 10); FactoresPrimos fp2 = new FactoresPrimos(ofp.FactorialEnPrimos(n - r)); FactoresPrimos fp3 = new FactoresPrimos(ofp.FactorialEnPrimos(r)); FactoresPrimos fp4 = fp2 * ofp.FactorialEnPrimos(r); FactoresPrimos fpres1 = fp1 / (fp2 * fp3); FactoresPrimos fpres2 = fp1 / fp4; FactoresPrimos fpres3 = fp1 / fp2; fpres3 = fpres3 / fp3.Factores; MessageBox.Show("Muestra de operaciones con objetos FactoresPrimos\n\n\n" + "fp1: ((49! * 50) * 60)/60 = " + n + "! = " + fp1.FactoresConPotenciasParaOperarEnTexto(fp1) + "\n\n" + "fp2: " + (n - r) + "! = " + fp2.FactoresConPotenciasParaOperarEnTexto(fp2) + "\n\n" + "fp3: " + r + "! = " + fp3.FactoresConPotenciasParaOperarEnTexto(fp3) + "\n\n" + "fp1 / (fp2 * fp3) = " + fpres1.FactoresConPotenciasParaOperarEnTexto(fpres1) + "\n\n" + "fp1 / (fp2 * fp3.factores) = " + fpres2.FactoresConPotenciasParaOperarEnTexto(fpres2) + "\n\n" + "(fp1 / fp2) / fp3.factores = " + fpres3.FactoresConPotenciasParaOperarEnTexto(fpres3) + "\n\n" + "Debe ser " + n + " C " + r + " = " + ofp.FactoresEnTexto(ofp.CombinacionesSinRepEnPrimos(n, r)) + "\n\n fp3 ^ 9 = " + fp3.FactoresConPotenciasParaOperarEnTexto(fp3 ^ 9)); }
public static FactoresPrimos operator /(FactoresPrimos fp1, uint[][] fp2) { FactoresPrimos fpRes = new FactoresPrimos(); int min = fp1.PotenciasParaOperar.Count(); int max = fp2.Count(); if (max < min) { min = max; fpRes = new FactoresPrimos(fp1); } else { fpRes = new FactoresPrimos(fp2); for (int i = 0; i < max; i++) { fpRes.PotenciasParaOperar[i] *= -1; } } for (int i = 0; i < min; i++) { fpRes.PotenciasParaOperar[i] = fp1.PotenciasParaOperar[i] - fp2[i][1]; } return(fpRes); }
public static FactoresPrimos operator *(FactoresPrimos fp1, FactoresPrimos fp2) { FactoresPrimos fpRes; int min = fp1.PotenciasParaOperar.Count(); int max = fp2.PotenciasParaOperar.Count(); if (max < min) { min = max; fpRes = new FactoresPrimos(fp1); for (int i = 0; i < min; i++) { fpRes.PotenciasParaOperar[i] += fp2.PotenciasParaOperar[i]; } } else { fpRes = new FactoresPrimos(fp2); for (int i = 0; i < min; i++) { fpRes.PotenciasParaOperar[i] += fp1.PotenciasParaOperar[i]; } } return(fpRes); }
public static FactoresPrimos operator ^(FactoresPrimos fp1, uint k) { FactoresPrimos fpRes = new FactoresPrimos(fp1); for (int i = 0; i < fp1.Factores.Count(); i++) { fpRes.PotenciasParaOperar[i] *= k; } return(fpRes); }
public FactoresPrimos(FactoresPrimos fp) { int c = fp.Factores.Count(); PotenciasParaOperar = new long[c]; Factores = new uint[c][]; for (int i = 0; i < c; i++) { Factores[i] = new uint[2]; } for (int i = 0; i < c; i++) { Factores[i][0] = fp.Factores[i][0]; Factores[i][1] = fp.Factores[i][1]; PotenciasParaOperar[i] = fp.PotenciasParaOperar[i]; } }
public string FactoresConPotenciasParaOperarEnTexto(FactoresPrimos fp) { string texto = ""; int c = fp.Factores.Count(); for (int i = 0; i < c; i++) { if (fp.PotenciasParaOperar[i] == 0) { continue; } if (fp.PotenciasParaOperar[i] == 1) { texto += "(" + fp.Factores[i][0] + ") "; } else { texto += "(" + fp.Factores[i][0] + "^" + fp.PotenciasParaOperar[i] + ") "; } } return(texto); }
public frmPrincipal() { InitializeComponent(); ofp = new FactoresPrimos(); }