作者在 2011-08-26 12:10:59 发布以下内容
在论坛上看到的题目,自己试着做了一下
/*
时间:2011年8月24日12:07:02
功能:编程,任意输入一个偶数n,请将它分解为两个素数之和。输出形式为:* = * + *
目的:练习使用函数完成判断是否素数的功能
备注:论坛回帖 http://bbs.bccn.net/thread-348017-1-1.html 第1问
*/
# include <stdio.h>
bool IsPrime (int val) //判断一个数是否素数,返回true或false
{
int i;
for (i=2; i<val; ++i)
{
if (val%i == 0)
break;
}
if (i == val)
return true;
else
return false;
}
int main(void)
{
int j;
int m,n;
do
{
printf("请输入一个大于2的偶数\n");
scanf("%d",&j);
} while (j%2 != 0 || j<2);
for (m=2; m<=j/2; ++m)
{
if (IsPrime(m))
{
n = j-m;
if (IsPrime(n))
printf("%d = %d + %d\n",j,m,n);
}
}
return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
请输入一个大于2的偶数
8
8 = 3 + 5
Press any key to continue
————————————
*/
时间:2011年8月24日12:07:02
功能:编程,任意输入一个偶数n,请将它分解为两个素数之和。输出形式为:* = * + *
目的:练习使用函数完成判断是否素数的功能
备注:论坛回帖 http://bbs.bccn.net/thread-348017-1-1.html 第1问
*/
# include <stdio.h>
bool IsPrime (int val) //判断一个数是否素数,返回true或false
{
int i;
for (i=2; i<val; ++i)
{
if (val%i == 0)
break;
}
if (i == val)
return true;
else
return false;
}
int main(void)
{
int j;
int m,n;
do
{
printf("请输入一个大于2的偶数\n");
scanf("%d",&j);
} while (j%2 != 0 || j<2);
for (m=2; m<=j/2; ++m)
{
if (IsPrime(m))
{
n = j-m;
if (IsPrime(n))
printf("%d = %d + %d\n",j,m,n);
}
}
return 0;
}
/*
在VC++6.0中的输出结果为:
————————————
请输入一个大于2的偶数
8
8 = 3 + 5
Press any key to continue
————————————
*/
后来看到 32楼 坛友的代码更为简洁,模仿着改进一下
/*时间:2011年8月26日12:16:12*/
# include <stdio.h>
bool IsPrime (int val) //判断一个数是否素数,返回true或false
{
int i;
for (i=2; i<val; ++i)
{
if (val%i == 0)
break;
}
if (i == val)
return true;
else
return false;
}
int main(void)
{
int j;
int m,n;
do
{
printf("请输入一个大于2的偶数\n");
scanf("%d",&j);
} while (j%2 != 0 || j<2);
for (m=2; m<=j/2; ++m)
{
if (IsPrime(m) && IsPrime(j-m)) //这里做了一点改进今后注意
printf("%d = %d + %d\n",j,m,j-m);
}
return 0;
}
发现自己总想不起来用逻辑运算符,以后注意# include <stdio.h>
bool IsPrime (int val) //判断一个数是否素数,返回true或false
{
int i;
for (i=2; i<val; ++i)
{
if (val%i == 0)
break;
}
if (i == val)
return true;
else
return false;
}
int main(void)
{
int j;
int m,n;
do
{
printf("请输入一个大于2的偶数\n");
scanf("%d",&j);
} while (j%2 != 0 || j<2);
for (m=2; m<=j/2; ++m)
{
if (IsPrime(m) && IsPrime(j-m)) //这里做了一点改进今后注意
printf("%d = %d + %d\n",j,m,j-m);
}
return 0;
}