Hiperprimos

Re: Hiperprimos

by Marcio T. I. Oshiro -
Number of replies: 0

Primeiro, dois vetores com 2 x 10^6 posições cada são muito grandes para serem declarados localmente (dentro de uma função). Eles precisam ser globais. Isso porque, basicamente, os espaços reservados na memória para variáveis locais e variáveis globais são diferentes. Para saber mais sobre isso veja http://www.tenouk.com/ModuleW.html

Mesmo corrigindo isso, seu código tem problemas. Um dos principais motivos para segmentation fault é acessar uma posição inválida de um vetor. Tente conferir todos os acessos à posições de vetores e verifique se os índices estão sempre entre zero e MAX.

Uma última coisa é seu laço de leitura que nunca vai parar. O valor devolvido pelo scanf é o número de "coisas" que ele conseguiu ler (1 se ele ler o valor de N) ou EOF (se chegar no final do arquivo). Mas note que EOF == -1. Logo, a condição do seu while é sempre verdadeira.