Autor Tema: Algoritmo de primos

0 Usuarios y 2 Visitantes están viendo este tema.

11 Febrero, 2026, 01:43 pm
Respuesta #10

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

Voy a intentarlo a mi manera, sin IA. Cada número posee lo que sería una "firma energética", utilizando la metodología de señales en la aritmética modular.

¿Pero realmente crees qué esa frase explica algo?.

Mirando el código lo que haces es muy parecido al test de Miller-Rabin. Sin embargo en lugar de comparar para un base \( a \) la igualdad  \( a^{2^r\cdot d} \) con  \( -1 \) mod \( n \) (si se da o no se da), tu promedias la desviación típica de la diferencia \( min\{a^{2^r\cdot d}-1,a^{2^r\cdot d}+1\} \) mod \( n \) y eso es lo que llamas la "energía". Cuando \( n \) es primo para muchas bases y muchas de las potencias el resultado será exactamente \( 1 \) o \( -1 \) (esa diferencia nula) y la "energía" sería baja. También menos variable.

La cosa es que terminas por hacer las mismas cuentas que en Miller-Rabin obteniendo un resultado menos concluyente.

Citar
1. Esta es la versión light, tengo la versión definitiva, que no voy a poner, no por usted, sino porque no corresponde y no quiero compartirlo, me lo guardo para mí.

Pues tu mismo. Yo opino de lo que expones obviamente, que adivino no soy. Lo que tengas guardado en tú caja fuerte ya es cosa tuya.  ::) ::)

Citar
2. En base a los primos detectados, es verdad, sólo hace un filtro, pero es la identificación visual de la "estructura energética" de la "firma" la que puede descartar hasta primos (me refiero a números compuestos que pasan por primos) que engañan a los test de primalidad más complejos.

Esto es una vaguedad.

Citar
En términos de eficiencia un número de 7000 dígitos tarda alrededor de 160 segundo en mi ordenador.

Ya no sé si te refieres al código que has puesto o al que tienes en la caja fuerte. Pero así probando en mi ordenador dependiendo de que número algunos los evalúa en menos de un segundo.

Citar
Parece ser que tiene la complejidad de Miller Rabin \( O(k log^3n) \) pero no estoy seguro.

Lo que te dije antes: esencialmente haces las mismas cuentas que en Miller-Rabin.

Saludos.

13 Febrero, 2026, 10:44 am
Respuesta #11

RH

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 239
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
Lo he expuesto, el problema, en Mathforums.

https://mathforums.com/t/visual-structural-signatures-for-prime-number-detection.373906/

Aquí el foro estaba saturado y me costaba contestar y me estaba liando, y también para darle más visibilidad por si alguien ve algo interesante.

Gracias, saludos.
Juego de pinball gratuito hecho con el motor Zeta Atlas:

https://claude.ai/artifact/Km3QhYf4QJB7jbwVHrZirf   

Motor físico, dinámicas nunca vistas, instalar gratis.

13 Febrero, 2026, 11:20 am
Respuesta #12

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

Lo he expuesto, el problema, en Mathforums.

https://mathforums.com/t/visual-structural-signatures-for-prime-number-detection.373906/

Aquí el foro estaba saturado y me costaba contestar y me estaba liando, y también para darle más visibilidad por si alguien ve algo interesante.

Últimamente (desde el lunes) el foro está presentando problemas de conexión; estamos trabajando en su solución.

Por otra parte has vuelto a borrar cosas que habías escrito. Eso dificulta seguirte y responderte. En cualquier caso creo que lo esencial de lo que haces ya lo he comentado en mi última respuesta.

Saludos.

13 Febrero, 2026, 12:52 pm
Respuesta #13

RH

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 239
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
Hola

Lo he expuesto, el problema, en Mathforums.

https://mathforums.com/t/visual-structural-signatures-for-prime-number-detection.373906/

Aquí el foro estaba saturado y me costaba contestar y me estaba liando, y también para darle más visibilidad por si alguien ve algo interesante.

Últimamente (desde el lunes) el foro está presentando problemas de conexión; estamos trabajando en su solución.

Por otra parte has vuelto a borrar cosas que habías escrito. Eso dificulta seguirte y responderte. En cualquier caso creo que lo esencial de lo que haces ya lo he comentado en mi última respuesta.

Saludos.

Desde luego, es un fallo mío, quiero poner el mensaje lo mejor posible, veo que no es el mejor mensaje, y lo borro, si no me han contestado, para intentar expresarlo mejor o rectificar.  :-[

He puesto en el enlace, (en el hilo del otro foro), el código mejorado, y el método de cálculo (más formal, con transformadas de fourier) con unos ejemplos de primos, ilustrados.

Es verdad que la esencia es trivial, pero el concepto de firma y distinción visual de cada número entre primo y compuesto, ¿puede ser algo no trivial? Eso es lo que me pregunto.

Gracias, saludos.

Añado:

"Es una técnica de Primalidad Basada en Firmas Espectrales, que utiliza la Transformada de Fourier para evaluar la coherencia de las órbitas de los residuos cuadráticos en el grupo multiplicativo de los enteros módulo N."

Código última versión (Al final, lo pongo, soy generoso  :)):
Spoiler
Código: [Seleccionar]
function [es_primo, metrica_final] = analizador_primalidad_visual_v9(N_str)
    t_proceso = tic; % Inicio del cronómetro
   
    % 1. Preparación de BigInteger
    N = java.math.BigInteger(N_str);
    uno = java.math.BigInteger.ONE;
    dos_bi = java.math.BigInteger('2');
    mil_bi = java.math.BigInteger('1000000');
   
    % Descomposición N-1 = 2^s * d
    d = N.subtract(uno); s = 0;
    while d.remainder(dos_bi).equals(java.math.BigInteger.ZERO)
        d = d.divide(dos_bi); s = s + 1;
    end

    % 2. Muestreo de multifrecuencia (Bases optimizadas)
    bases = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47];
    registro_fase = [];

    for a = bases
        if N.compareTo(java.math.BigInteger(num2str(a))) <= 0, break; end
        x = java.math.BigInteger(num2str(a)).modPow(d, N);
       
        % Fase inicial escalada
        f_i = x.multiply(mil_bi).divide(N).doubleValue() / 1000000;
        registro_fase(end+1) = f_i;
       
        for r = 1:(s-1)
            x = x.multiply(x).remainder(N);
            dist = x.subtract(N.subtract(uno)).abs().min(x.subtract(uno).abs());
            f_evol = dist.multiply(mil_bi).divide(N).doubleValue() / 1000000;
            registro_fase(end+1) = f_evol;
            if x.equals(uno), break; end
        end
    end

    % --- 3. ANÁLISIS DE SEÑAL Y MÉTRICAS ---
    L = length(registro_fase);
    tiempo_total = toc(t_proceso); % Captura del tiempo

    % FFT Normalizada
    sig = registro_fase - mean(registro_fase);
    espectro = abs(fft(sig)) / L;
    resonancia = max(espectro);
    if isempty(resonancia) || resonancia == 0, resonancia = 1e-6; end

    % Métrica de Estabilidad (Varianza de fase)
    % Un primo tiene una distribución de fases armónica, un compuesto es caótico.
    estabilidad = std(registro_fase);
   
    % Métrica Híbrida V9 (Cuanto más baja, más "Primo")
    metrica_final = (estabilidad) / (1 + resonancia * sqrt(L));

    % --- 4. RESULTADOS EN CONSOLA ---
    fprintf('\n============================================\n');
    fprintf('   ANALIZADOR DE ENERGÍA ESTRUCTURAL V9\n');
    fprintf('============================================\n');
    fprintf('N (dígitos): %d\n', length(N_str));
    fprintf('Tiempo de cómputo: %.6f segundos\n', tiempo_total);
    fprintf('Métrica de Energía: %.12f\n', metrica_final);
   
    % Umbral adaptativo para números grandes y Mersenne
    % Sustituye la sección del umbral en tu V9 por esta:
    if s < 3
    umbral_dinamico = 0.15; % Los Mersenne son más "ruidosos" por falta de s
    else
    umbral_dinamico = 0.10; % Números estándar
    end

if metrica_final < umbral_dinamico
    fprintf('VEREDICTO: [PRIMO POSIBLE] - Resonancia detectada.\n');
    es_primo = true;
else
    fprintf('VEREDICTO: [COMPUESTO] - Disonancia estructural.\n');
    es_primo = false;
end


    % --- 5. VISUALIZACIÓN DE LA FIRMA ---
    figure('Color', 'w', 'Name', ['Firma Energética - ', N_str(1:min(8,end)), '...']);
   
    % Subplot 1: Firma Temporal
    subplot(2,1,1);
    plot(registro_fase, '-o', 'Color', [0.2 0.6 0.8], 'MarkerFaceColor', [0.2 0.6 0.8], 'LineWidth', 1.2);
    title(['Firma Energética (t = ', num2str(tiempo_total, '%.4f'), 's)']);
    ylabel('Amplitud de Fase'); grid on;
   
    % Subplot 2: Análisis de Resonancia
    subplot(2,1,2);
    area(espectro, 'FaceColor', [0.8 0.3 0.3], 'EdgeAlpha', 0.5);
    title(['Resonancia Espectral (FFT) - Métrica: ', num2str(metrica_final, '%.6f')]);
    ylabel('Magnitud'); xlabel('Frecuencia'); grid on;
   
    % Añadir texto con tiempo exacto en la gráfica
    text(0.02, 0.9, ['Tiempo total: ', num2str(tiempo_total), ' s'], 'Units', 'normalized', 'FontWeight', 'bold');
end

%-----Como indicar los comandos----%
%Copiar despues de *
%A:
% 1. Construimos el número: un '1', seguido de 597 ceros, y luego '2117357'
%*n_str = ['1', repmat('0', 1, 597), '2117357'];

% 2. Lo enviamos al analizador
%*analizador_primalidad_visual_v9(n_str);
%----

%B:
%*analizador_primalidad_visual_v9('');

%C:
% Asegúrate de usar formato largo para no perder precisión
%*valor_real = char(str2sym('2^607 - 1'));
%*analizador_primalidad_visual_v9(valor_real)
[cerrar]

Ejemplos del visualizador:

(c) Primo 173:


(bb1) Compuesto 999999991:



Pregunta de examen: ¿Qué dirías sobre éste número simplemente viendo este gráfico? ¿Es primo o compuesto?




Juego de pinball gratuito hecho con el motor Zeta Atlas:

https://claude.ai/artifact/Km3QhYf4QJB7jbwVHrZirf   

Motor físico, dinámicas nunca vistas, instalar gratis.

13 Febrero, 2026, 03:09 pm
Respuesta #14

feriva

  • $$\Large \color{#a53f54}\pi\,\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 12,032
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino

Últimamente (desde el lunes) el foro está presentando problemas de conexión; estamos trabajando en su solución.

intuyo que es debido a que desde el día 10 el foro comenzó a pulverizar los récords de visitantes conectados de toda la historia del foro; ¿podría ser?

Saludos.

14 Febrero, 2026, 12:20 am
Respuesta #15

Richard R Richard

  • Ingeniero Industrial
  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,054
  • País: ar
  • Karma: +2/-0
  • Sexo: Masculino
  • Dentro de la ciencia todo,fuera de la ciencia nada

Últimamente (desde el lunes) el foro está presentando problemas de conexión; estamos trabajando en su solución.

intuyo que es debido a que desde el día 10 el foro comenzó a pulverizar los récords de visitantes conectados de toda la historia del foro; ¿podría ser?

Saludos.
Mejor visitantes que bots de IA  chupando nuestro conocimiento... que conspiranoico no?


Respecto al tema RH , aquí nadie te va a robar una idea,  si la publicas  se sabrá claramente que es tuya, puedes entonces explicarnos de que trata la cosa,  usando palabras mas cotidianas ... con todo respeto , en mi opinión personal  suenan,   a expedientes X, o esos comentarios filosóficos que enmascaran  algo con gran misterio pero cuando analizas, nada queda, en realidad te he podido seguir muy poco.
Saludos  \(\mathbb {R}^3\)

14 Febrero, 2026, 12:28 am
Respuesta #16

feriva

  • $$\Large \color{#a53f54}\pi\,\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 12,032
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino

Últimamente (desde el lunes) el foro está presentando problemas de conexión; estamos trabajando en su solución.

intuyo que es debido a que desde el día 10 el foro comenzó a pulverizar los récords de visitantes conectados de toda la historia del foro; ¿podría ser?

Saludos.
mejor visitantes que bots de IA  chupando nuestro conocimiento... que conspiranoico no?

En absoluto, nada conspi, la propia IA me ha dicho que seguramente es eso, bots de universidades o de centros científicos.

Saludos.

14 Febrero, 2026, 03:57 pm
Respuesta #17

RH

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 239
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
Hola Richard, es un test de primalidad visual.

El código es en matlab, tu me parece que usas python.

Dejo la  equivalencia (no la he probado, puede tener algún error) en phyton:

Código: [Seleccionar]
import math
import time
import numpy as np
import matplotlib.pyplot as plt

def analizador_primalidad_visual_v9(N_str):
    t_proceso_inicio = time.time() # Inicio del cronómetro
   
    # 1. Preparación de enteros grandes (Python maneja enteros grandes nativamente)
    N = int(N_str)
    if N <= 1:
        return False, 0.0
       
    uno = 1
    dos_bi = 2
    mil_bi = 1000000

    # Descomposición N-1 = 2^s * d
    d = N - uno
    s = 0
    while d % dos_bi == 0:
        d //= dos_bi
        s += 1
   
    # 2. Muestreo de multifrecuencia (Bases optimizadas para Miller-Rabin)
    bases = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
    registro_fase = []
   
    for a in bases:
        if N <= a:
            break
       
        # Python usa pow(base, exp, mod) para modular exponentiation eficiente
        x = pow(a, d, N) # Fase inicial escalada
       
        # Simulación de las métricas visuales del código original
        f_i = (x * mil_bi // N) / 1000000
        registro_fase.append(f_i)
       
        for r in range(s - 1):
            x = (x * x) % N
            dist = min(abs(x - (N - uno)), abs(x - uno))
            f_evol = (dist * mil_bi // N) / 1000000
            registro_fase.append(f_evol)
            if x == uno:
                break
   
    # --- 3. ANÁLISIS DE SEÑAL Y MÉTRICAS ---
    L = len(registro_fase)
    tiempo_total = time.time() - t_proceso_inicio # Captura del tiempo

    if L == 0: # Manejar caso de N pequeño, ej. 2, 3, 5
        es_primo = True
        metrica_final = 0.0
    else:
        # FFT Normalizada
        sig = np.array(registro_fase) - np.mean(registro_fase)
        espectro = np.abs(np.fft.fft(sig)) / L
        resonancia = np.max(espectro)
        if resonancia == 0:
            resonancia = 1e-6
       
        # Métrica de Estabilidad (Varianza de fase)
        estabilidad = np.std(registro_fase)

        # Métrica Híbrida V9 (Cuanto más baja, más "Primo")
        metrica_final = (estabilidad) / (1 + resonancia * math.sqrt(L))
       
        # Umbral adaptativo para números grandes y Mersenne
        if s < 3:
            umbral_dinamico = 0.15 # Los Mersenne son más "ruidosos" por falta de s
        else:
            umbral_dinamico = 0.10 # Números estándar
           
        if metrica_final < umbral_dinamico:
            es_primo = True
        else:
            es_primo = False
           
    # --- 4. RESULTADOS EN CONSOLA ---
    print('\n============================================')
    print(' ANALIZADOR DE ENERGÍA ESTRUCTURAL V9')
    print('============================================')
    print(f'N (dígitos): {len(N_str)}')
    print(f'Tiempo de cómputo: {tiempo_total:.6f} segundos')
    print(f'Métrica de Energía: {metrica_final:.12f}')

    if es_primo:
        print('VEREDICTO: [PRIMO POSIBLE] - Resonancia detectada.')
    else:
        print('VEREDICTO: [COMPUESTO] - Disonancia estructural.')
       
    # --- 5. VISUALIZACIÓN DE LA FIRMA ---
    plt.figure(figsize=(10, 7), facecolor='w')
    plt.suptitle(f"Firma Energética - {N_str[:min(8, len(N_str))]}...")
   
    # Subplot 1: Firma Temporal
    plt.subplot(2, 1, 1)
    plt.plot(registro_fase, '-o', color='#0099cc', markerfacecolor='#0099cc', linewidth=1.2)
    plt.title(f'Firma Energética (t = {tiempo_total:.4f}s)')
    plt.ylabel('Amplitud de Fase')
    plt.grid(True)
   
    # Subplot 2: Análisis de Resonancia
    plt.subplot(2, 1, 2)
    plt.fill_between(range(len(espectro)), espectro, color='#ff6666', alpha=0.7)
    plt.title(f'Resonancia Espectral (FFT) - Métrica: {metrica_final:.6f}')
    plt.ylabel('Magnitud')
    plt.xlabel('Frecuencia')
    plt.grid(True)
   
    # Añadir texto con tiempo exacto en la gráfica
    plt.figtext(0.5, 0.45, f'Tiempo total: {tiempo_total:.4f} s', horizontalalignment='center',
                verticalalignment='center', fontweight='bold', transform=plt.gcf().transFigure)
   
    # Ajustar layout para evitar superposiciones
    plt.tight_layout(rect=[0, 0.03, 1, 0.95])
    plt.show()

    return es_primo, metrica_final

# --- Ejemplos de uso (copiar después del asterisco en MATLAB original) ---

# Ejemplo A: Número compuesto grande
# 1. Construimos el número: un '1', seguido de 597 ceros, y luego '2117357'
n_str = '1' + '0' * 597 + '2117357'
# 2. Lo enviamos al analizador
# analizador_primalidad_visual_v9(n_str)

# Ejemplo B: Cadena vacía (manejo de error básico, el código fallaría si N <= 1)
# analizador_primalidad_visual_v9('') # Comentar, ya que causaría error con int('')

# Ejemplo C: Un número primo de Mersenne conocido (2^607 - 1)
# Asegúrate de usar formato largo para no perder precisión
valor_real = str(2**607 - 1)
analizador_primalidad_visual_v9(valor_real)
Breve Explicación
El código, tanto en MATLAB como en Python, implementa un enfoque híbrido para determinar la primalidad de números muy grandes:
Miller-Rabin (Algoritmo base): La parte central del algoritmo es una implementación del test de primalidad de Miller-Rabin utilizando un conjunto fijo de bases (bases = [2, 3, ..., 47]). Python maneja automáticamente números enteros de cualquier tamaño, simplificando el manejo de BigInteger de Java usado en MATLAB.
Métricas Experimentales y Visualización: El código introduce métricas "estructurales" o "energéticas" no estándar. Calcula una serie de "fases" (registro_fase) durante el test de Miller-Rabin y aplica un Análisis de Fourier Rápido (FFT) para buscar patrones o "resonancias".
Veredicto Híbrido: Un "primo posible" genera una firma de fase más estable y armónica (baja métrica final), mientras que un compuesto suele ser más caótico. El resultado final combina el principio del test de Miller-Rabin con un umbral dinámico basado en estas métricas visuales experimentales. La visualización con Matplotlib permite inspeccionar visualmente estas "firmas energéticas".

Si quieres "jugar", simplemente analiza patrones, prueba números, semiprimos, etc.

Sólo es un método experimental científico, no hay ninguna evidencia de que afecte a RSA, lo digo porque google puede "llamar la atención" si intentas corregir el código o experimentar en modo IA.

Saludos.   :)


Juego de pinball gratuito hecho con el motor Zeta Atlas:

https://claude.ai/artifact/Km3QhYf4QJB7jbwVHrZirf   

Motor físico, dinámicas nunca vistas, instalar gratis.