我的函数“inverse”的冲突类型,旨在返回long long类型

时间:2015-05-22 11:47:10

标签: c function compiler-errors inverse modular

我试着找出我在这里做错了什么,基本上该函数用于计算模块的倒数到 -1 mod m。但程序正在出错。

有人可以指出导致错误的原因吗?

//calculating the inverse of the public key, for getting private key d. long     
long long inverse(long long a, long long m) 
{ 
   long long p = a, q = m, t; 
   //Euclidean algorithm 
   long long x = 0, y = 1, z = (long long)q/p; 

   //start recursion 
   while(p != 1 && q != 1) 
   {
       t = p; 
       p = q % p; 
       q = t; 
       t = y; 
       y = x - y * z; 
       x = t; 
       z = (long long)q/p; 
   } 

   y = (long long)y % m; 
   if(y < 0) 
   { 
      y += m; 
   } 

   //return inverse number; 
   return y; 
}

2 个答案:

答案 0 :(得分:1)

这里的问题是以下任何一个:

  1. 您有一个不匹配的前向声明和函数定义,正如his answer @iharob 先生所说。
  2. 根本没有前瞻性声明。该功能已在之前使用(称为)。因此,隐式声明(UIDatePicker返回,任意数量的参数接受)与实际定义相冲突。

答案 1 :(得分:0)

您声明了一个与函数定义不匹配的函数原型,如何执行此操作的示例,放在文件顶部或头文件中以下

int inverse(int a, int n);

然后你的定义是

long long inverse(long long a, long long n)
{
}