我的想法很简单,也很直接,把一个数拆成两个,如果两个数都是质数,那就成立。
完整代码如下:
#include <stdio.h>
#include <stdlib.h>
int prime(int n) /*定义函数prime,用于判断质数*/
{
int i,f=1;
for (i=2;i<n;i++)
{
if(n%i==0)
{
f=0;
break;
}
}
if(f==0) return 0;
else return 1;
}
int main()
{
printf("用于把一个数拆分成两个质数之和\n");
while(1)
{
int n,a,b,amount=0;
scanf("%d",&n);
for(a=2;a<=n/2;a++)
{
b=n-a;
if(prime(a)&&prime(b))
{
printf("%d=%d+%d\n",n,a,b);
amount++;
}
}
printf("总数=%d\n",amount);
printf("\n");
}
system("pause");
return 0;
}
CPU是酷睿i7,风扇轰鸣一小时多,结果倒是对的。
是我的算法要改进,还是这题本来就这么坑爹?
同学们有什么好方法啊?
|