Sobre uma breve discussão a respeito do Teorema de Goldbach.
Pintou no
Só Matemática um código sobre.
Reescrevi-o para C. Há uma falha a ser corrigida, mas fica para depois.
#include <stdio.h>
#include <math.h>
int IsPrime (int p){
int j=0;
if (p%2 == 0) return 0;
for (j=3; j<=1+(int)sqrt(p) && (p%j!=0); j+=2);
return (p%j!=0);
}
int main (int argc, char *argv[]) {
int i=0, m=0, n=0;
if (argc!=2){
puts ("use ./goldbach
"); exit(1);
}
n=atoi(argv[1]);
if (n<=4){
puts ("numero muito pequeno"); exit(1);
}
if (n%2==1){
puts ("numero impar"); exit(1);
}
printf ("%d:", n);
for (i=3; i<=n/2; i+=2) {
if (IsPrime(i) && IsPrime(n-i)) {
printf("\n\t %ld = %ld + %ld",n, i, n-i);
m++;
}
}
printf ("\n%d representacoes distintas\n", m);
return 0;
}
Publicado originalmente no livro "Open Sources"
"Quando eu comecei a trabalhar no Laboratório de Inteligência Artificial do MIT (N.d.T. Massachussets Institute of Technology) em 1971, eu me tornei parte de uma comunidade que compartilhava software que existia a muitos anos. Compartilar software não era limitado apenas para nossa comunidade particular; é tão antigo quanto os computadores, assim como compartilhar receitas é tão antigo quanto cozinhar. Mas nós fizemos mais do que a maioria."
..........
"O Laboratório de IA usava um sistema operacional de tempo compartilhado chamado ITS (N.d.T. Incompatible Timesharing System) que a equipe de hackers do laboratório (1) havia desenvolvido e escrito na linguagem assembler para o Digital PDP-10, um dos maiores computadores da era. Como um membro dessa comunidade, um membro da equipe de hackers do laboratório de IA, meu trabalho era melhorar esse sistema."
..........
"O termo "software livre" é mal interpretado algumas vezes--não tem nada haver com preço. Ele se refere à liberdade. Aqui, então, está a definição de software livre: um programa é software livre, para você, usuário qualquer, se:
* Você tem a liberdade para executar o programa, para qualquer propósito.
* Você tem a liberdade de modificar o programa para se adequar às suas necessidades. (Para tornar este tipo de liberdade efetivo na prática, você deve ter acesso ao código fonte, uma vez que fazer mudanças em um programa sem o código fonte é extremamente difícil.)
* Você tem a liberdade de redistribuir cópias, tanto de graça quanto por uma taxa.
* Você tem a liberdade de distribuir versões modificadas do programa, de modo que a comunidade possa se beneficiar das suas melhorias. "
(1) O uso do termo "hacker" significando "alguém que quebra segurança" é uma confusão por parte da mídia das massas. Nós hackers nos recusamos a reconhecer este significado, e continuamos utilizando a palavra significando "Alguém que ama programar e gosta de saber fazê-lo com esperteza."
Script para bash que lê um arquivo de "configuração" com uma lista de palavras e depois entra interativamente em uma lista de subdiretórios varrendo arquivos de texto um a um e substituindo expressões por outras.
O mesmo lagoritmo pode ser usado para criar semelhante em perl, php, python, c etc. Dependendo da linguagem ele cobrirá outras plataformas.
Foi testado em textos menos complexos distribuídos em árvores de diretórios. Pode ser usado por exemplo em diretórios de páginas de html.
#! /bin/bash
# clontexto - Deve ter um jeito mais facil de se fazer essa @#$%!! de serviço.
[[ $# -ne "3" ]] && echo -e "Parametros errados.\nUse ./clontexto.sh " && exit;
[[ ! -f $1 ]] && echo "$1: Arquivo inexistente" && exit;
[[ ! -d $2 ]] && echo "$2: Diretorio inexistente" && exit;
[[ -d $3 ]] && echo "$3: Destino existente" && exit;
direc () {
cd $1;
q=`pwd`;
d=${q/$dir_mod/};
[[ ! -d $dest_dir/$d ]] && mkdir $dest_dir/$d;
for i in *; do
[[ -d $i ]] && direc "$i"
[[ -f $i ]] && sed "${f[*]}" "$i" > "$dest_dir/$d$i";
done;
cd ..
}
arq_conf=$1;
dir_mod=$2;
dest_dir=$3;
t=1;
while read i; do
f[$((t++))]="s/${i/://}/g;";
done < $arq_conf;
c=`pwd`; t=1;
direc "$dir_mod" "$dest_dir";
cd $c;