实验报告三
实验题目(2)编程序exp4_5.c,验证歌德巴赫猜想:2000以内的正偶数(不包括2)都能够分解为两个质数之和,即验证歌德巴赫猜想对2000以内的正偶数成立。(算法提示:将整数分解为两部分,然后判断出分解出的两个整数是否均为质数。若是,则满足题意并输出;否则重新进行分解和判断。(其中,判断一个整数是否为质数部分用函数实现,其余功能是否用函数实现自行决定)。
源代码:
#include<stdio.h>
#include<math.h>
int judgeprime(int n)
{
int i, k;
int judge = 1;
if (n == 1)
return 0;
k = (int)sqrt(n);
for (i = 2; judge && i <= k; i++)
if (n % i == 0)//判断质数
return 0;
return 1;
}
int main()
{
int x, m, n;
for (x = 4; x <= 2000; x += 2)//判断正偶数
{
for (n = 3; n < (x / 2); n += 2)
{
m = x - n;//分解成两个数
if (judgeprime(n) && judgeprime(m))
{
printf("%d=%d+%d\n", x, m, n);
}
}
}
return 0;
}
实验题目(3)用调试器观察实验教材程序exp4_8.c的运行过程,并记录各种变量在每一步执行时的变化情况,填写下表(如果某一步该变量不在作用域内,请在表格中注明)
源代码:
#include<stdio.h>
int a = 1;
int f(int a)
{
auto int b = 2;
static int c = 3;
a = a + 1;
b = b + 1;
c = c + 1;
return(a + b + c);
}
int main()
{
int i;
for (i = 0; i < 3; i++)
{
a = a + 2;
printf("%d \n", f(a));
}
return 0;
}
调试结果:
实验题目(4):编程序exp4_7.c,用递归方法实现求解两个整数的最大公约数,并与迭代方法作比较。
源代码:
c#include<stdio.h>
int GCD(int m, int n);
int main()
{
int b, x, y;
printf("请输入两个正整数:");
scanf_s("%d,%d", &x, &y);
b = GCD(x, y);
printf("最大公约数为%d\n", b);
return 0;
}
int GCD(int m, int n)
{
if (!(m % n))
return n;
else
return(GCD(n, m % n));
}
结果:随便输入两个整数,输出结果即为两个数的最大公约数