1、用 C 语言编程实现一种迭代版本的简单乘法。
#include<stdio.h>
int main()
{
int a,b,sum=0;
scanf("%d %d",&a,&b);
while(b){
sum+=a;
b--;
}
printf("积为:%d\n",sum);
return 0;
}
2、给出定理1.1(除法算法)的完整证明。![](https://img-blog.csdnimg.cn/0ec44bbd8d9740bdae6492e6c2a78c7e.jpeg)
3、用 C 语言编程实现一种迭代版本的gcd算法和一种egcd算法。利用gcd算法,写程序完成以下函数的功能。输入:一个正整数n;输出:大于等于1,小于n,且与n互素的正整数的个数。
1、gcd,egcd算法
#include <stdio.h>
int Gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
int Egcd(int a, int b, int *x, int *y) {
if (b == 0) {
*x = 1;
*y = 0;
return a;
}
int x1, y1;
int gcd;
gcd = Egcd(b, a % b, &x1, &y1);
*x = y1;
*y = x1 - (a / b) * y1;
return gcd;
}
int main() {
int a, b;
scanf("%d %d", &a, &b);
int gcd;
gcd = Gcd(a, b);
printf("GCD(%d, %d) = %d\n", a, b, gcd);
int x, y;
int egcd = Egcd(a, b, &x, &y);
printf("EGCD(%d, %d) = %d, x = %d, y = %d\n", a, b, egcd, x, y);
return 0;
}
2、功能函数(判断与n是否互素)
#include <stdio.h>
int Gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
int main()
{
int n,i,cnt=0;
scanf("%d",&n);
for(i=1;i<n;i++)
if(Gcd(i,n)==1)
cnt++;
printf("与%d互素的正整数的个数为%d\n",n,cnt);
return 0;
}
4、第二章的第6、8题。
![](https://img-blog.csdnimg.cn/8f0787155c094f12b00b6bdc8b84bab8.jpeg)
![](https://img-blog.csdnimg.cn/8c4d2f380fe5483ca944ac574399f48d.jpeg)