I would like to figure out how many ways there are to create product pairs equal to or less than a certain number. In other words, find a pair of integers $(n,m)$ such that $nm \le N$ for a given integer $N$.
I'm creating a math game and I have an idea for how to adjust the difficulty. In the preferences, you can set a maximum value $N$ for the answers. For the multiplication problems, I want to be able to control the number of $0\times n$, $n \times 0$, $1\times n$ and $n \times 1$ problems.
My plan is to do it by adjusting the frequency of those types of problems. I can calculate the number of the the other types of problems, but I can't calculate their frequency without knowing the total number of possible multiplication problems $n\times m \le N$.
For the ones I gave, the numbers are, for a maximum answer of N:
Including 0 as a factor: $2N+1$
Including 1 as a factor: $2N-1$
Doubles, such as $n \times n$: N even: $\frac{N+2}{2}$ N odd: $\frac{N+1}{2}$
My question is similar to two others, but these do not have complete or general answers:
Number of ordered pairs $(a,b)$ such that $ab \le 3600$
Number of pairs with product less than a given number.
An analytical solution is given here, but no explanation so I'm not sure if it is right or not.
Following up on the accepted answer. Here is the comparison between actual and $N\log{N}$:
N Actual Number N*Log(N)
1 1 0.00
2 3 1.39
4 8 5.55
8 20 16.64
16 50 44.36
32 119 110.90
64 280 266.17
128 645 621.06
256 1466 1419.57
512 3280 3194.02
1024 7262 7097.83
2048 15937 15615.22
4096 34720 34069.57
My matlab code is:
% scriptCountNumProducts.m
s = sprintf(' N\t\tActual Number\t\tN*Log(N)');
disp(s);
for q = 0:12
N = 2^q;
count = 0;
for n=1:N
for m = 1:N
product = m*n;
if product <= N
count = count + 1;
end
end
end
s = sprintf(...
'%4d \t\t%5d\t\t\t%0.2f',N, count, N*log(N)...
);
disp(s);
end
As Mark Bennet points out, asking which integer $x$ and $y$ satisfy $xy \leq N$ is equivalent to asking which integer points lie underneath the hyperbola $y = \frac{N}{x}$. The integer points may be hard to count exactly, but the area containing these points is easier to compute with Calculus: $$ \int_1^N \frac{N}{x} dx = N \ln N. $$ Most of the area comes from unit squares lying totally under the curve. Each of these can be identified with its lower-left corner, which is an ordered pair of integers having product less than $N$. The method is not exact, since some of the area is coming from unit squares that lie only partly under the curve. Still, $N \ln N$ is a good estimate.