\documentclass[brazil]{article}

\usepackage[utf8]{inputenc}
\usepackage[portuguese]{babel}
%\usepackage[margin=1.5cm,nohead]{geometry}
\usepackage{amsmath}

\title{Prova de Algoritmos e Estruturas de Dados I}

\author{\ }

\date{30 de Maio de 2011}

\pagestyle{empty}

\begin{document}

\maketitle
\newcommand{\ordmasculine}{{\rm {\underline{o}}}}
\newcommand{\ordmasculines}{{\rm {\underline{os}}}}

\begin{enumerate}

\item (6 pontos) Escreva um programa que leia, repetidamente, um valor
  inteiro $n$ e imprima o valor de $\sum_{i=1}^n ((-i)+1)/(i*i)$, se
  $n>0$, e $0$ caso contrário.

   O programa deve ler os valores de $n$ da entrada padrão e imprimir
   na saída padrão. Ele deve funcionar para entradas não
   interativas. Ou seja, a entrada pode estar em arquivo, especificado
   por redirecionamento da entrada padrão. O programa deve terminar
   com o fim dos dados de entrada (i.e.~o término da entrada é
   indicado pelo valor retornado por {\tt scanf}).

\item (6 pontos) Escreva um programa que leia, repetidamente, três
  valores positivos $n,d_1,d_2$ e imprima (para cada vez que três
  valores forem lidos) todos os valores menores que $n$ que são
  divisores de $d_1$ ou de $d_2$. O programa deve terminar quando um
  dos três valores lidos ($n$ ou $d_1$ ou $d_2$) for menor ou igual a
  zero.

   Os valores devem ser lidos do dispositivo de entrada padrão e
   impressos no dispositivo de saída padrão. 

   Cada sequência de valores impressos (para cada três valores
   $n,d_1,d_2$) deve estar em uma linha distinta, e cada valor de cada
   sequência deve ser separado do seguinte por um espaço.

\item (13 pontos) Um número é {\em primo\/} se ele tem dois divisores
  distintos: {\tt 1} e ele próprio. Alternativamente, um número é
  primo se ele é maior ou igual a {\tt 2} e não tem nenhum divisor
  próprio (um divisor próprio é um divisor maior que {\tt 1} e menor
  que o próprio número).

  Escreva um programa que leia um número inteiro positivo e imprima
  uma mensagem dizendo se o número lido é um número primo ou não.

  O seu programa deve definir e chamar uma fun\c{c}ão para determinar
  se um número é primo ou não. Essa função deve, para um argumento
  $n$, testar, para valores entre 2 e o maior inteiro menor ou igual a
  $\sqrt{n}$, se o resto da divisão por $n$ é igual a zero, até
  encontrar tal valor ou até que o divisor fique maior que $\sqrt{n}$
  (em outras palavras, $n$ não é primo se existir um divisor de $n$
  entre 2 e o maior inteiro menor ou igual a $\sqrt{n}$).

  Observação: o teste pode ser feito até o maior inteiro menor ou
  igual a $\sqrt{n}$ (e não até $n-1$) porque o menor divisor próprio
  de $n$, se existir, é menor ou igual a $\sqrt{n}$.

  O valor de $\sqrt{n}$ deve ser obtido usando o m\'etodo de
  aproxima\c{c}\~oes sucessivas de Newton. O m\'etodo de Newton
  especifica que, se $y_i$ \'e uma aproxima\c{c}\~ao para $\sqrt{x}$,
  ent\~ao uma aproxima\c{c}\~ao melhor \'e dada por:
  \[ y_{i+1} = (y_i + x/y_i) / 2 \]

  Por exemplo, sejam $x = 2$ e $y_0 = 2$. Ent\~ao:
    \[ \begin{array}{ll}
       y_1 = (2 + 2/2) / 2 & = 1.5\\
       y_2 = (1.5 + 2/1.5) / 2 & = 1.4167\\
       y_3 = (1.4167 + 2/1.4167) / 2 & = 1.4142157
       \ldots
     \end{array}
  \]

  A sua função deve repetir esse processo até que a diferença entre
  aproxima\c{c}\~oes sucessivas ($y_{i+1} - y_i$) obtidas por esse
  método seja menor que um valor fixo {\it minDif\/}. O seu programa
  deve especificar {\it minDif\/} como sendo igual a 5 centésimos.

\end{enumerate}

\end{document}

