Im trying to write a program to print all the primes from 1 to 100. I am however required to use a boolean function. My problem is that all the odd #s except 1 also appear in the output.

#include "stdafx.h"
#include <stdio.h>
#include "strlib.h"
#include "genlib.h"
#include "random.h"
#include <math.h>

bool IsPrime(int num);

int main()
{
	int num;

	num=2;
	printf("The prime numbers in the range of 1-100 are:\n");
	printf("%d\n", num);
	for (num=3;num<=100;num+=2)
	{
		if (IsPrime(num)==(true));
		{
			printf("%d\n", num);
		}
	}
}
	
bool IsPrime(int num)
{
	int i; 
	double limit;

	if (num<=1) return (false);
	if (num==2) return (true);
	if (num%2==0) return (false);
	limit=sqrt(double(num))+1;
	for (i=3;i<=limit;i+=2)
	{
		if (num%i==0) return (false);
	}
	return (true);
}

Use code tags and format you code please, it's hard to read. :)
You can't make a boolean function in C. Use int instead (zero and nonzero).
Why do you have so meany headers? All you need is stdio.h and math.h

Also, I think the line:

limit=sqrt(double(num))+1;

Was ment to be:

limit=sqrt((double)num)+1;

Apart from what Hiroshe has rightly stated,I would like to add these (after all corrections stated by Hiroshe):

1>

if (IsPrime(num)==(true));
{
printf("%d\n", num);
}

No semicolon at the end of if and don't do redundant work as in IsPrime(num)==(true) the following is enough:

if (IsPrime(num)) //No semicolon and a return of 1 is enough no need to recheck with "==" op.
{
printf("%d\n", num);
}

2>
And in your IsPrime function with this line :

for (i=3;i<=limit;i+=2)

You can still cut down the number of checks by checking only with the prime numbers <=limit as the rule says "If a number cannot be completely divided by any prime number <= its square root then that number is a prime".
Of course this doesn't matter much when the limit is 100 but for higher limits it counts a lot.

Thanks for the help. It seems the semi-colon was the only problem.

This question has already been answered. Start a new discussion instead.