Boa Tarde,
Cara, tentei replicar a tua função aqui; http://cpp.sh/ e me ocorreu falta de diversas funções, que acredito que no programa que tu utiliza, não são necessárias mas vi que a tua operação dentro do 'for' estava errada, tanto que nem entendi o teu código (parece código para ver se o número é par ou não. ), onde eu fiz o código "do zero" utilizando as mesmas funções que tu precisa: cout, cin, if, else, etc. Como a tua função dentro do 'for' estava errada, sempre o teu resultado saía com o valor 1, por estar decrementando o valor dentro dele. To colocando abaixo o código que tenho para ver se o número é primo ou não, se te ajudar, que bom, se não é só ignorar
#include <iostream>
using namespace std;
int main()
{
int nprimo = 0;
int resultado;
int x;
cout << "Digite um numero inteiro maior que 0: " << endl;
cin >> x;
int nao_primo=0, divisoes=0, i;
if ((x == 1) || (x % 2 == 0) && (x != 2))
nao_primo = 1;
else
for(i = 1; (i <= x) && (divisoes <= 2); i += 2){
if (x % i == 0)
divisoes++;
}
if ((nao_primo == 0) && (divisoes <= 2)){
cout <<"O numero e primo";
}
else{
cout << "O numero " << x << " nao e primo" << endl;
}
}
Só uma observação, se tu tirar a função do 'for' do código que passei, funciona igual, coloquei ali só para que seja realizada a operação.