if ( num % fac == 0 ) //If there is no remainder, 'fac' must be a factor of 'num'
Quote from darkcampaingerThe modulus operator (%) sounds like what you want:
7 % 3 = 1 (the remainder of 7/3)
144 % 12 = 0 (there is no remainder, it divides evenly)
So this should work:
if ( num % fac == 0 ) //If there is no remainder, 'fac' must be a factor of 'num'
In the case of checking if a number is prime, you want a remainder for all possible factors.
The method I generally use is to do an initial check to see if the number is even (x % 2 == 0), and if not, then loop from 3 through sqrt(x), incrementing in steps of two to skip even numbers, and seeing if x is evenly divisible by any of those numbers.
There may be a better method online, so I would go Google-ing around. Something like "C++ determining prime numbers" should work.
#include
#include
#include
int main(int argc, char *argv[])
{
int num = 11;
int i = 0;
/* 0 == false */
int isPrime = 0;
/* if it's even */
if((num % 2) != 0)
{
/* while i isn't as big as the sqrt of the number */
for(i = 3; i <= sqrt(num); i++)
{
/* if it can be divided evenly by i, it's not prime (set isPrime to 0) */
if(num % i == 0)
{
isPrime = 0;
/* break so it doesn't set it to prime in the future */
break;
}
/* otherwise set isPrime to 1 because the number is prime */
else
isPrime = 1;
}
}
/* if the number was prime, print it was prime, otherwise, print it wasn't prime */
if(isPrime == 1)
printf("%d is prime\n\n", num);
else
printf("%d isn't prime\n\n", num);
return(0);
}
Quote from Fluxinatorumm did it help at all?
#include
using namespace std;
int main()
{
int prime;
for(int number = 3; number <= 100; number ++)
{
for(int divide = 2; divide <= (number - 1); divide ++)
{
prime = number/divide;
if(prime = 0)
{
break;
}
}
}
return 0;
}
Quote from anim44sorry, I program in straight C ;)
if( (prime % divide) == 0 )
break;
#include
using namespace std;
int main( int argc, char *argv[] )
{
int prime = 0, number = 0, divide = 0;
for( number = 3; number <= 100; number++ )
{
for( divide = 2; divide <= (number - 1); divide++ )
{
if( (prime % divide) == 0)
break;
}
}
return 0;
}
Quote from doogI think I may have to get a tutor for a class for the first time in my life >.<
Quote from FluxinatorNah, I never learnt from a tutor. I program in straight C and I can recognise the problem. The syntax in that code is virtually the same as it is written in C. You assign 0 to prime instead of comparing them. (i.e. it should be prime == 0, not prime = 0). As 0 is false, and it's another way of putting (prime is false), the statement will never be evaluated. That is equivalent to (if( !prime )). So basically you missed an '='. Also, instead of doing it in 2 steps, why not do:
That says "if prime divided by 'divide' leaves no remainder, break".
if( (prime % divide) == 0 )
break;
The code could be rewritten as so:
I don't see what you're trying to achieve though. This code just loops through each number, and on each number it divides the number by another number in a loop. If the number is not prime it moves on to the next original number. If you tell me what you're trying to do I could maybe make a sample program and try to explain it? Sorry for my explanations, I'm not a very good teacher :P
#include
using namespace std;
int main( int argc, char *argv[] )
{
int prime = 0, number = 0, divide = 0;
for( number = 3; number <= 100; number++ )
{
for( divide = 2; divide <= (number - 1); divide++ )
{
if( (prime % divide) == 0)
break;
}
}
return 0;
}