以下のプログラムをつくのに少しいきづまったのでどなたかご教授いただけたら幸いです。
ある素数pが与えられたとし、元が{0、1、、、、、p-1}であり演算がModule-o(pを法とする乗余系)に従う場合を考える。たとえばp=5のとき群の元は{1、2,3,4}であり、2+4の演算結果は1となる。同様に3×4=2 加法の単位元は0乗法の単位元は1である。
ここでmodulo-pの加算および乗算の演算を考えるとき、元{0,1、、、、、p-1}に対する加法の逆元、および、乗法の逆元を表示するプログラム。
表示方法として以下のようにしたい。
---OP=ADD---
0 0
1 4
2 3
3 2
4 1
---OP=MUL---
0 *
1 1
2 3
3 2
4 1
#include <stdio.h>
int add_func(int p){
int i, add_inv;
printf("---OP==ADD---");
for (i = 0; i < p; i++) {
printf("%d \n", i);
add_inv = p - i;
printf("&d\n", add_inv);
}
return (0);
}
int mul_func(int p){
printf("---OP==MUL---\n");
printf("0 *\n1 1\n"); //0 * 1 1を先に 表示()
for (i=2; i < p; i++) {
int mal_inv;
for(mal_inv = 2; mal_inv < p; mal_inv++) {
if(((mal_inv * i)%p) == 1) {
printf("%d %d\n", i, mal_inv );
break;
}
}
}
return(0);
}
int main(void)
{
int p;
printf("type the prime number\n");
scanf("%d", &p);
add_func(p);
mul_func(p);
return(void);
}