质数与合数
题号:NC21350
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

FFF和GGG正在玩一个质数与合数的游戏
一开始有N个石头
FFF和GGG轮流对这堆石头进行操作,FFF每次选择1到K之间的一个数x,并拿走x个石头,拿走之后剩下的石头数量必须是质数
接着GGG进行同样的操作,但是要求拿走之后剩下的石头数量必须是合数
假设双方都足够聪明,第一个不能操作的人输
以为到这里就结束了?
显然,一开始两人之间有一人知道自己有必胜策略,现在他想要尽可能快的赢,另外一个人则想要尽可能输的慢一点
给你N与K,假设游戏最终持续了X轮,如果FFF赢了,输出X,否则输出-X
注意:1既不是质数也不是合数

输入描述:

输入一行,包含两个整数N,K (1 ≤ N ≤ 474747, 1 ≤ K ≤ N)

输出描述:

输出一个整数
示例1

输入

复制
3 2

输出

复制
1
示例2

输入

复制
58 1

输出

复制
0
示例3

输入

复制
30 3

输出

复制
-2
示例4

输入

复制
6 3

输出

复制
1
示例5

输入

复制
526 58

输出

复制
19

备注:

子任务1: N <= 100
子任务2: N <= 10000
子任务3: 无限制