Página 1 de 3 123 ÚltimoÚltimo
Resultados 1 a 10 de 22

Tópico: [DESAFIO] Menor palíndromo primo maior que time()

  1. #1
    Hacker ingresso Avatar de guedes.acp
    Data de Ingresso
    Sep 2010
    Localização
    #!/usr/bin/env perl
    Posts
    1.445
    Post Thanks / Like

    [DESAFIO] Menor palíndromo primo maior que time()

    Ola, Invaders.

    Tivemos sucesso em nosso primeiro desafio pré-pascoa, o do Maio Palíndromo. <-link

    Quem não viu, pode postar sua resposta vendo as instruções no link acima.

    Agora trago a vocês um novo desafio, ainda com palíndromo, mas dessa vez procuramos o Menor Palíndromo.

    Para quem não sabe o que é um número palíndromo, a explicação está no desafio do link acima.

    O objetivo desse desafio é achar o menor número palíndromo que seja maior que time().

    A função time() (considerando a maioria das linguagens) retorna o número de segundos 'não bissextos' desde o tempo que o sistema considera ser a época adequada para alimentar a função localtime e GMtime. Sendo que a maioria dos sistemas considera essa data 00:00:00 UTC de 01 de janeiro de 1970. Uma exceção é o Mac OS Classic que usa 00:00:00 de 1 de janeiro de 1904.

    - O participante deverá obter o valor de time() e imprimir esse valor na tela.
    - Em seguida, devera achar o primeiro número primo que seja ao mesmo tempo palíndromo.

    Aconselho usar algum servidor mais robusto que permita executar o código online para testar sua resposta.
    So respondo se a consiencia perguntar!!!
    Não Respondo MP's de perguntas, as faça em um tópico!

    Perl User, Bioinformatcs Programmer!


    just another biomedical perl hacker try to learn Delphi

  2. #2
    Membro ingresso
    Data de Ingresso
    Apr 2012
    Posts
    70
    Post Thanks / Like
    Segundo o programa , o numero é 10000500001 ->

    Código PHP:
    #include <time.h>
    #include <stdio.h>

    int primo(long long int p){
        
    long long int i;
        
    int c 0;

        for(
    i=2;i<p;i++){
            if(
    p%== 0){
                
    1;
                break;
            }
        }

        return 
    c;
    }

    int palindromo(long long int n){
        
    long long int count=1,count2=1;
        
    int i=0,size=0,c=0,r;

        while(
    >= count)
                    
    count*=10,size++;

            
    int reverse[size];

        for(
    i=0;i<size;i++,count2*=10)
            
    reverse[i] = ((n/count2)%10);

        for(
    i=0,r=(size-1);i<size;i++,r--){
            if(
    reverse[i] != reverse[r]){
                
    1;
                break;
            }
        }

        if(
    != 0){
            return 
    c;
        }
        
    printf("\r%lld",n);
        
    primo(n);
        return 
    c;
    }

    int main(void){
        
    long long int p;
        
    long long int timestamp time(NULL);
        
    timestamp;
        
    printf("Time: %lld\n",timestamp);
        while(
    1){
            if(
    palindromo(p) == 0)
                break;
            
    p++;
        }
        
    printf("\n\nPalindromo & primo: %lld\n",p);

    Executando:

    Código:
    $ time ./desafio
    Time: 1397855718
    10000500001
    
    Palindromo & primo: 10000500001
    
    real	49m33.603s
    user	47m48.880s
    sys	0m16.004s

  3. #3
    Membro Avançado ingresso
    Data de Ingresso
    Dec 2011
    Localização
    !/usr/bin/env perl
    Posts
    868
    Post Thanks / Like
    Se em C já levou 50 minutos, imagina em outras linguagens? õ.o'

  4. #4
    Moderador ingresso Avatar de .Nero
    Data de Ingresso
    Feb 2012
    Localização
    Earth
    Posts
    699
    Post Thanks / Like
    Imagina em Java.

    - kiss principle -
    - repeat after me: harem -


  5. #5
    Hacker ingresso Avatar de guedes.acp
    Data de Ingresso
    Sep 2010
    Localização
    #!/usr/bin/env perl
    Posts
    1.445
    Post Thanks / Like
    Citação Postado originalmente por Nero Ver Post
    Imagina em Java.

    Java deve se aproximar muito de C.
    O problema de java é que o tempo que demora para abrir em C ja tem a resposta.

    Acredito que Python deve ser rapido, não tanto quanto C. É pq Python foi projetado com proposito de ter alto desempenho no campo matemático.
    Ja vi alguns trabalhos que mostram ser mais rapido que Perl para cálculos, e já vi outros que parece desmentem isso.

    Agora apostaria em Fontran, provavelmente faria na metade do tempo do C.
    Um codigo em ASM bem feito deve botar quente também.

    Podiamos usar os servidores da NASA que o que demora 50min demoraria 1min.

    Hoje to sem tempo, mas vou ver se posto minha resposta em breve.
    So respondo se a consiencia perguntar!!!
    Não Respondo MP's de perguntas, as faça em um tópico!

    Perl User, Bioinformatcs Programmer!


    just another biomedical perl hacker try to learn Delphi

  6. #6
    Old School ingresso Avatar de .legaCy
    Data de Ingresso
    Jul 2009
    Posts
    4.966
    Post Thanks / Like
    Citação Postado originalmente por guedes.acp Ver Post
    Java deve se aproximar muito de C.
    O problema de java é que o tempo que demora para abrir em C ja tem a resposta.

    Acredito que Python deve ser rapido, não tanto quanto C. É pq Python foi projetado com proposito de ter alto desempenho no campo matemático.
    Ja vi alguns trabalhos que mostram ser mais rapido que Perl para cálculos, e já vi outros que parece desmentem isso.

    Agora apostaria em Fontran, provavelmente faria na metade do tempo do C.
    Um codigo em ASM bem feito deve botar quente também.

    Podiamos usar os servidores da NASA que o que demora 50min demoraria 1min.

    Hoje to sem tempo, mas vou ver se posto minha resposta em breve.
    Ou utilizar GPU.
    Faça uma doação em bitcoin: 14zQW8RrvuHoKjQp6Y4EBqA38yvPauwGwA
    Menos estado e mais progresso.

    Microsoft Technology Associate: Software Development Fundamentals (C#)

  7. #7
    Hacker ingresso Avatar de guedes.acp
    Data de Ingresso
    Sep 2010
    Localização
    #!/usr/bin/env perl
    Posts
    1.445
    Post Thanks / Like
    Código PHP:
    #!/usr/env/bin perl 

    use feature 'say';
    use 
    warnings;
    use 
    strict;


    sub primo{
        
    my $n =  shift;
        
    my $last_n int ($n/2);
        
    my $res 1;
        
    IN: for (my $i 2$i <= $last_n$i++){
            
    my $p $n/$i;
            if (
    $p == int $p){
                
    $res 0;
                
    last IN;
            }
        }
        return 
    $res;
    }

    sub numgen{
        
    my $s time();
        
    my $w 1;
        while (
    $w == 1){
            if ((
    $s/2) == int ($s/2)){($s time())}
              else{(
    $w 0)}
        }
        return 
    $s;
    }

    my $f_time numgen();
    say "time: $f_time";

    while (
    1){
        if (
    primo($f_time)){
            if (
    $f_time == reverse($f_time)){
                
    say "Palindromo Primo: $f_time";
                exit;
            }
            else{
                
    $f_time += 2;
            }
        }
        else{
            
    $f_time += 2;
        }

    Última edição por guedes.acp; 21 Apr 2014 às 18:24.
    So respondo se a consiencia perguntar!!!
    Não Respondo MP's de perguntas, as faça em um tópico!

    Perl User, Bioinformatcs Programmer!


    just another biomedical perl hacker try to learn Delphi

  8. #8
    Hacker ingresso Avatar de guedes.acp
    Data de Ingresso
    Sep 2010
    Localização
    #!/usr/bin/env perl
    Posts
    1.445
    Post Thanks / Like
    Minha resposta em C.

    Código:
    #include <stdio.h>
    #include <string.h>
    
    
    
    
    int main()
    {
      long long int t = numgen();
      printf ("Time: %d\n", t);
      int w = 1;
      while(w == 1){
        if (primo(t)){
            if(t == reverseint(t)){
                printf("Palindromo Primo: %d\n", t);
                w = 0;
            }
            else{
                t++;
                t++;
            }
        }
        else{
            t++;
            t++;
        }
      }
      return 0;
    }
    
    
    int numgen() {
        long long int n = time(NULL);
        int n2;
    	if ((n % 2) == 0){
            n = n + 1;
            return n;       
    	}
        else{
        	return n;        
        }
    }
    
    
    int primo(long long int n){
        long long int d;
        int res;  
    
    
        if (n <= 1 || (n != 2 && n % 2 == 0))
        res= 0;
        else
    	res = 1;
    	
        d = 3;
        while (res  && d <= n / 2) {
    	if (n % d == 0)
    	    res = 0;
    	d = d + 2;
        }	
        return res;
    }
    
    
    int reverseint(long long int num_){
            long long int inv;
            inv = 0;
            while (num_>0){
                inv = inv * 10 + (num_%10);
                num_ = num_ / 10;
            }
            return inv;
    }
    Última edição por guedes.acp; 22 Apr 2014 às 12:35.
    So respondo se a consiencia perguntar!!!
    Não Respondo MP's de perguntas, as faça em um tópico!

    Perl User, Bioinformatcs Programmer!


    just another biomedical perl hacker try to learn Delphi

  9. #9
    Old School ingresso Avatar de fvox
    Data de Ingresso
    Sep 2005
    Localização
    São Paulo - SP
    Posts
    4.486
    Post Thanks / Like
    Citação Postado originalmente por rdxdt Ver Post
    Ou utilizar GPU.
    Em que a utilização de GPU ajudaria nesse processo, meu jovem?

    []'s
    Acha que está caindo na insanidade? Mergulhe!

    Twitter | Blog | Facebook | Github

  10. #10
    Hacker ingresso Avatar de guedes.acp
    Data de Ingresso
    Sep 2010
    Localização
    #!/usr/bin/env perl
    Posts
    1.445
    Post Thanks / Like
    Citação Postado originalmente por fvox Ver Post
    Em que a utilização de GPU ajudaria nesse processo, meu jovem?

    []'s
    Nesse caso, precisamente, eu não sei, na verdade acho que para esse caso, threads, fork ou cron jobs seria melhor que usar GPU.

    Mas na bioinformática tem usado muito a GPU, não para cálculos pesados, mas para simulações tri-dimencionais, como analise de estrutura terciaria e quaternária de proteína (não a imagem, mas os binding dos aminoácidos da proteína), e ate mesmo fluxo de elementos figurados do sangue.

    Também tem sido usado para analise de fluxo aereo dentre outros.

    Mas nesse caso acho que não seria vantagem, pois a GPU ainda não supera a CPU quando o assunto é velocidade de calculos.

    Parallel Programming

    NVidea GPU Programming Guide
    So respondo se a consiencia perguntar!!!
    Não Respondo MP's de perguntas, as faça em um tópico!

    Perl User, Bioinformatcs Programmer!


    just another biomedical perl hacker try to learn Delphi

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •