题目详情
对于整数n,n的阶乘表示为n!定义如下
0! = 1
n! = n * (n - 1)!
给定n和m,问n!是否是m的倍数?
n和m全在32位整数范围内,m非0。
返回1和0表示整除和不整除。
这道题的关键一点是只需要找2^16内的素数, 因为n的范围是2^32,故它包含的素因子必然小于2^16,
可以分解m的素因子,在n到1的素因子中一一查找即可.而且这一过程不用分解n到1.如下代码所示动态查找.
#include<stdio.h>
#include<math.h>
int prime[65555];
int makePrime(int top)
{
int i, j;
for(i = 2; i <= 65555; i++)