定义:费马小定理(Fermat Theory)是数论中的一个重要定理,其内容为: 假如p是质数,且Gcd(a,p)=1,那么 a(p-1) ≡1(mod p)。即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a(p-1)模p的余数恒等于1。
题目:给定一个方程式f(x)=5x13+13x5+kax,给定一个非负整数k,求能不能找到一个尽量小的非负整数a,使得上述方程式中的x任意取值,结果都能被65整除,如果有,输出a的值,否则输出no。
理解:65=13×5。要使f(x)是65的倍数,只需要f(x)是5和13的倍数即可。
1.若f(x)是13的倍数,则(5x13+13x5+kax )% 13 == 0,其中13x5显然是13的倍数,所以只需(5x13+kax )是13的倍数,即(5x12+ka )x是13的倍数。
如果x是13的倍数,则不用考虑。
如果x不是13的倍数,则x一定与13互素,由费马小定理得,x12%13= =1,则5x12%13= =5。因为要让任意x满足条件,则括号内必为13的倍数,有(ka+5)%13= =0,则ka%13= =8。
2.同理可得ka%5= =2。
据此,若k为5或13的倍数,a一定无解,否则,一定有解。
代码:
#include<stdio.h>
int main()
{
int k;
while(scanf("%d",&k)!=EOF)
{
int i=1;
if(k%5==0||k%13==0)
printf("no\n");
else
while(i)
{
if(k*i%5==2&&k*i%13==8)
{
printf("%d\n",i);
break;
}
i++;
}
}
return 0;
}