
用c语言编程从键盘输入一个较大正整数n(n>=6),并验证从6到n之间的所有偶数都可以分解为两个素数之和的形 20
2个回答
展开全部
分解为两个素数之和的形?不是很明白,楼主举个例子吧。
看看我这个程序符不符合你的意思。
/*用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);//输出统计个数
}
看看我这个程序符不符合你的意思。
/*用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);//输出统计个数
}
展开全部
#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;
}
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;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询