#include <iostream>
 
using std::cout;
using std::cin;
using std::endl;
 
//数え上げ
//最小値Min以上、最大値Max以下の自然数のうち、ある自然数Xによって割り切れるものの個数を求めてください。
 
//必殺馬鹿正直戦法
//int main()
//{
//	int tmin,tmax, tx;
//	cin >> tmin;
//	cin >> tmax;
//	cin >> tx;
//	int count = 0;
//	for (int i = tmin; i <= tmax; i++)
//	{
//		if (i % tx == 0)count = count+1;
//	}
//	cout << count << endl;
//}
//これだと、時間制限に引っかかる
//ので、頭を使う
//①1 ~ MINまでにXの約数はMIN/X個 ある
//②1 ~ MAXまでにXの約数はMAX/X個 ある
//例;MINが21、MAXが31、Xが5の時の①②は
//① 1 2 3 4 "5" 6 7 8 9 "10" 11 12 13 14 "15" 16 17 18 19 "20" 21  
//   [5,10,15,20] 21/5=4
//② 1 2 3 4 "5" 6 7 8 9 "10" 11 12 13 14 "15" 16 17 18 19 "20" 21 22 23 24 "25" 26 27 28 29 "30" 31
//   [5,10,15,20,25,30] 31/5=6
//この差分を求めればよいことになる。そんで、MIN以上、MAX以下なので、②に含まれる約数の数からからMIN-1より下の約数の数をひけばいいよね
//① 1 2 3 4 "5" 6 7 8 9 "10" 11 12 13 14 "15" 16 17 18 19 "20" |21 ←MIN以上  
//② 1 2 3 4 "5" 6 7 8 9 "10" 11 12 13 14 "15" 16 17 18 19 "20" |21 22 23 24 "25" 26 27 28 29 "30" 31 ←MAX以下
//31/5 - (21-1)/5 = 6 - 4 = 2個になる。
 
#include <iostream>
 
 
using std::cout;
using std::cin;
using std::endl;
 
//数え上げ
//最小値Min以上、最大値Max以下の自然数のうち、ある自然数Xによって割り切れるものの個数を求めてください。
//計算して出すよ
//
int main()
{
	long int tmin, tmax, tx;
	cin >> tmin;
	cin >> tmax;
	cin >> tx;
 
	cout << tmax / tx - (tmin - 1) / tx << endl;
}