用c语言编程从键盘输入一个较大正整数n(n>=6),并验证从6到n之间的所有偶数都可以分解为两个素数之和的形

如题所述

分解为两个素数之和的形?不是很明白,楼主举个例子吧。
看看我这个程序符不符合你的意思。

/*用c语言编程从键盘输入一个较大正整数n(n>=6),
并验证从6到n之间的所有偶数都可以分解为两个素数之和的形

*/

#include<stdio.h>
#include<math.h>
#define N 500//定义数组的最大个数

void judgenum(int num);
main()
{
int num;
int i=0;
printf("请输入一个整数(>=6):");
scanf("%d",&num);
if(num<6)//判断输入的数
printf("error!");
judgenum(num);
getch();
}

void judgenum(int num)
{
int prinum[N];
int i,j;
int k=0;
int n,m;
int count=0;//计算符合题意的个数
for(i=2;i<=num;i++)//先查找2至输入的数之间的质数
{
for(j=2;j<i;j++)//优化方案j<sqrt(i+1)
if(i%j==0)
break;
if(j>=i)//优化方案j>=sqrt(i+1)
{ prinum[k]=i;k++;} //将这些质数存放到数组中
}
for(i=2;i<=num;i+=2)//穷取法
{
if(i%2==0)//找偶数
{
for(n=0;n<k;n++)//双层循环,将数组中的数相加
for(m=n;m<k;m++)
{
if((prinum[n]+prinum[m])==i)//判断相加后是否等于范围内的偶数
printf("%d可以分解为%d,%d\n",i,prinum[n],prinum[m],count++);
}//输出结果
}
}
printf("这样的数一共有%d个\n",count);//输出统计个数
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-26
#include "stdio.h"

int isSuShu(int n)
{
int i;

for (i = 2; i < n; i++)
{
if (n % i == 0)
return 0;
break;
}

return 1;
}

int main(void)
{
int i, j, num;

printf("输入大于6的整数:");
scanf("%d", &num);

for (i = 6; i <= num; i++)
{
if (i % 2 == 0)
{
for (j = 1; j <= i/2; j++)
if (isSuShu(j) && isSuShu(i - j))
printf("%d = %d + %d\n", i, j, i - j);
}
}
return 1;
}本回答被网友采纳
相似回答