Algorithm code as follows:
#include
#include
bool PrimeNumber(int n);
void main()
{ int a;
printf("%s","please input one integer:");
scanf("%d",&a);
if(PrimeNumber(a)) printf("%d%s\n",a," is a prime number.");
else printf("%d%s\n",a," not prime number.");
}
bool PrimeNumber(int n)
{ bool flag=false;
int k=(int)sqrt(n),i;
for(i=2;i<=k;i++)
{
if(n%i==0)
flag=false;
else
flag=true;
break;
}
return flag;
}
Now the question is When a user enter 2 or 3 to show why not prime number.Other numbers can be displayed correctly.
thanks.

VulpesPosted Mar 6, 2012, 5:06 AM
Consequently, the body of the for loop is never entered and the function returns the value of flag which is false.
To fix it, I'd recode your function as follows:
bool PrimeNumber(int n)
{
if (n < 2) return false;
int k = (int)sqrt((double)n), i;
for(i = 2; i <= k; i++)
{
if(n % i == 0) return false;
}
return true;
}
Ken HPosted Mar 7, 2012, 3:47 AM
very good code
thanks.