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 Java8 (OpenJDK 1.8.0) (judge verdict: Accepted)

import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		boolean[] prime = new boolean[1000];
		/*	prime[i - 1] : iが素数	*/
		prime[1 - 1] = false;
		for(int i = 2; i <= 1000; i++)
			prime[i - 1] = true;
		for(int i = 1; i <= 1000; i++) {
			if(prime[i - 1]) {
				for(int j = 2; i*j <= 1000; j++)
					prime[i*j - 1] = false;
			}
		}
		int[] counter = new int[1000];
		/*	n!が素因数iをcounter[i - 1]個持つ	*/
		for(int i = 1; i <= 1000; i++)
			counter[i - 1] = 0;
		for(int i = 1; i <= n; i++) {
			for(int j = 1; j <= i; j++) {
				if(prime[j - 1]) {
					int x = i;
					int count = 0;
					while(x%j == 0) {
						x = x/j;
						count++;
					}
					counter[j - 1] += count;
				}
			}
		}
		long result = 1;
		for(int i = 1; i <= 1000; i++)
			result = (result*(counter[i - 1] + 1))%1000000007;
		System.out.println(String.valueOf(result%1000000007));
	}
}