In kbruch's exercise mode, the Factorization exercise provides only 45 numbers to be factorized, which get repeated if the user uses the factorization exercise frequently.

So, I have tried to include all the relevant numbers(numbers which have as their factors only primes till 19) till 1000 which makes it to a total of 330 numbers. This way, the chance of getting different numbers for factorization increases.

# Details

Details

- Reviewers
*None*- Group Reviewers
KDE Edu

# Diff Detail

Diff Detail

- Lint
Lint Skipped - Unit
Unit Tests Skipped

Comment Actions

Are you sure a 6th grader can factorize 247? I believe only prime factors 2, 3, 5, 7 should be used, and additionally allowing only a single higher prime factor that is less than 100. E.g. 2*2*2*3*17 is okay, while 17*19 is not.

My students already have a hard time telling that 91 is not prime, because none of the simple divisor rules (2, 3, 5, 4, 9, 10, etc.) leads to the factorization.

Comment Actions

Here is what I use:

/** * All primes that fit into 8 bits * */ const unsigned char primesTable8[54] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251 }; bool hasTwoHardPrimes(int f) { for (int j = 0; j < 3; ++j) { int p = primesTable8[j]; while (f % p == 0) { f /= p; } } int pp = 1; for (int j = 3; j < 54; ++j) { int p = primesTable8[j]; if (f % p == 0) { f /= p; pp *= p; } } return (pp > 90 || f > 90); } int main(int argc, char *argv[]) { // 6 ... 16 int level = 10; for (int i = 2; i <= 1 << level; ++i) { if (isPrime(i) && i < 100 || !hasTwoHardPrimes(i)) { printf("%d, ", i); } } printf("\n"); }

if `hasTwoHardPrimes()` returns `true`, then I don't show the number for a factorization exercise. Note that this only works for numbers up to about 62500, but a 6th grader can/should factorize even large numbers such as 44100.

Feel free to update your table with numbers checked against this if you agree.