Problem:
Score : 300 points

Problem Statement

You are given an integer N.
Find the number of the positive divisors of N!, modulo 10^9+7.

Constraints

1≤N≤10^3

Input

The input is given from Standard Input in the following format:

N

Output

Print the number of the positive divisors of N!, modulo 10^9+7.

Sample Input 1

3

Sample Output 1

4

There are four divisors of 3! =6: 1, 2, 3 and 6. Thus, the output should be 4.

Sample Input 2

6

Sample Output 2

30

Sample Input 3

1000

Sample Output 3

972926972

Solution in C (GCC 5.4.1) (judge verdict: Accepted)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#define MOD 1000000007
#define MAXN 1000

long long num[MAXN];

// nを素因数分解し、各べき指数の数をカウント
void factorization(int n)
{
	int i;

	// 2で割り切れるまで割る
	while (n % 2 == 0) {
		n = n / 2;
		//num[1] = (num[1] + 1) % MOD;
		num[1]++;
	}
	// 3以上nの平方根以下の数で割り切れるまで割る
	for (i = 3; i <= sqrt(n); i += 2) {
		while (n % i == 0) {
			n = n / i;
			//num[i - 1] = (num[i - 1] + 1) % MOD;
			num[i - 1]++;
		}
	}
	if (n > 1) num[n - 1]++;//num[n - 1] = (num[n - 1] + 1) % MOD;
}

int main(void)
{
	long long N;
	long long ans = 1;
	long long i;

	scanf("%lld", &N);

	// 素因数分解
	for (i = 1; i <= N; i++) {
		factorization(i);
	}
	// 約数の個数を求める
	for (i = 1; i < N; i++) {
		ans = (ans * (num[i] + 1)) % MOD;
	}
	printf("%lld\n", ans);

	return (0);
}