求助帖,求解同余多项式
#include<stdio.h>#include<stdlib.h>
#include<math.h>
int main()
{
system("color f1");
printf("\n");
printf("f(x)=a0+a1*x^1+.....+an*x^n 同余0 (mod m)\n");
printf("0<n<100,0<m<1000\n");
printf("Please input n,m:\n");
int n,m;
loop: scanf("%d %d",&n,&m); //获得n,m的值,加以判断。
if((n<=0||n>=100)||(m<=0||m>1000))
{
printf("input wrong,please input again\n");
goto loop;
}
int a[n+1];
printf("Please input a(i),(i=0,,,n)\n");
int i;
for(i=0;i<=n;i++) //获得系数的值
{
scanf("%d",&a[i]);
}
for(i=0;i<=n;i++) //约简系数的值
{
a[i]=a[i]%m;
printf("%d,",a[i]); //输出约简后每个系数的值
}
printf("\n");
int b[n+1];
int x,i1;
int sum=a[0]; //先令sum等于首项
for(x=0;x<=m-1;x++) //将m的完全剩余系依次代入
{
b[0]=x; //个人感觉错误处在这里,但是改不过来,求助
for(i=1;i<=n;i++) //单独计算每个x次方的值
{
x=x*x;
b[i]=x;
}
x=b[0];
for(i1=0;i1<=n-1;i1++)
{
sum=sum+a[i1+1]*b[i1]; //每个x次方的值再乘以系数,求解总和
}
printf("%d,",sum);
if(sum%m==0) //判断sum能否被选取的x整除
{
printf(" (%d) ",x);
}
}
return 0;
}