题目:在控制台程序实现,用户输入一个大于2的偶数,把它分解成两个质数的和.
C语言代码如下:(自己修改了几次,虽然简单,但还是比较有成就感)
#include
int PrimeNum(int );
void main()
{
//质数百度上说,是指在一个大于1的自然数中,除了1和它本身外,
//不能被其他整数整除的数
//也就是说,1不是质数
int i,j,n,a;//i,j为所求的两个质数
int flag_i=0, flag_j=0;//flag_i等于0标志i为非质数,flag_i等于1标志i为质数
do{
printf("请输入个偶数n:\n");
a=scanf("%d",&n);//a获取scanf()函数的返回值
if (n%2 || a!=1 )
{
printf("你输入的不是偶数,请重新输入!\n");
fflush(stdin);//清空缓冲区
}
}while(n%2 || a!=1 );
printf("把偶数%d分解成两个质数相加的两个质数为:\n", n);
for (i=1; i<=(n/2); i++)
{
flag_i=PrimeNum(i);//判断i是否为质数
if (1==flag_i)//如果i为质数,则执行下面程序
{
j=n-i;
flag_j=PrimeNum(j);//判断j是否为质数
if (1==flag_j)//如果j为质数,则执行下面程序
{
printf("%d %d\n", i,j);
}
}
}
}
int PrimeNum(int x)//判断整型数x是否为质数的函数
{
int i ,flag=1;//flag置为1,代表x为质数
for(i=2; i
{
if (0==x%i)
{
flag=0;//x不是质数,则标志位置为1
}
}
return flag;
}
运行结果截图为: