试设计程序 验证任意一个不小于6的偶数可表示为两个素数之和
发布网友
发布时间:2022-11-18 17:26
我来回答
共2个回答
热心网友
时间:2024-11-24 11:33
思想:这个主要就是用到那个判断是不是素数的函数,其它的只要从最小开始记起若遇到两个数都是素数就输出,这也就证明了可以用两个素数之和来表示,程序如下:
#include <stdio.h>
#include <math.h>
#include <conio.h>
int sushu(int n) /*这个主要是用来判断是不是素数*/
{
int i;
if(n<=2) /*如果小于等于2则不是素数*/
return 0;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
return 0;
}
return 1; /* 1用来标志是素数,0标志不是素数*/
}
void main()
{
int i,shu,jishu=0;
do
{
printf("请输入一个偶数:\n");
scanf("%d",&shu);
if(shu%2!=0||shu<=6)
printf("请输入一个偶数!!!!");
else
break;
}while(1); /*主要用来输入一个数,且这个数是偶数*/
for(i=2;i<=shu;i++)/*从2开始循环到这个数本身*/
{
if(sushu(i)==1&&sushu(shu-i)==1)/*若两个都是素数则输出这两个数*/
{
jishu++;
printf("第%d个组合是:\n",jishu);
printf("%d,%d\n",i,shu-i);
}
}
if(jishu>0)
printf("%d可以可表示为两个素数之和",shu);
else
printf("%d不可以可表示为两个素数之和",shu);
getch();/*用来暂停界面*/
}
不懂的可以再问我!!!
热心网友
时间:2024-11-24 11:33
//---------------------------------------------------------------------------
#include <stdio.h>
#include <math.h>
int ss(int a)
{
int i;
for (i=2; i<=(int)sqrt(a); i++)
if (a%i==0)
return 0;
return 1;
}
void ssp(int n)
{
int i;
for (i=1; i<n; i++)
if (ss(i)&&ss(n-i)) {
printf("%d=%d+%d\n",n,i,n-i);
break;
}
}
int main(void)
{
int n;
scanf("%d",&n);
if (n<6) {
printf("ERROR!");
}
else ssp(n);
return 0;
}
//---------------------------------------------------------------------------