Uma primeira tentativa poderia ser este programa.
Ao tentarmos executar o programa, vimos que ele corretamente disse que M2 = 3, M3 = 7 e M5 = 31 são primos mas incorretamente disse que M7 = 127 é composto! O que aconteceu? Ao mandarmos o programa imprimir os valores de Sn, vimos e fica evidente que algo está muito errado. De fato, o que os computadores chamam de int é um elemento de para algum valor de N; no nosso caso, N = 32. Como Sn cresce muito rápido, em poucos passos ultrapassamos o limite de 2N e os valores de s calculados passam a estar errados.
A solução para o problema é fazer todas as contas modulo Mp, já que só precisamos saber no final se Sp-2 é ou não múltiplo de Mp. Uma versão levemente melhorada do nosso programa seria ll2.c; esta versão do programa agora verifica corretamente que M2 = 3, M3 = 7, M5 = 31, M7 = 127 são primos, que é composto e que M13 = 8191 é primo mas afirma incorretamente que M17 = 131071 é composto. O que ocorre é que apesar de M17 ainda ser bem menor do que 232, o limite de tamanho de ints, em contas intermediárias elevamos números na faixa de 0 a 131070 ao quadrado, e isto nos joga fora da margem de bom funcionamento de ints.