偶数与质数

Time Limit:1000MS  Memory Limit:65536K
题型: 编程题   语言: 无限制
描述


在计算机的帮助下,让我们验证一下哥德巴赫猜想吧。由键盘输入一个大于2的偶数(为了使问题变得简单一些,
给定的数最大不超过100000),找出2个质数,它们的和等于给定的偶数,如果有多组解则输出两质数乘积最小的一组。
(要求小的质数先输出,大的质数后输出)


输入格式


给定一个偶数
输出格式


两个质数,小在前,大在后,中间用一个空格分隔
输入样例


8
输出样例


3 5
Provider


admin








# include<stdio.h> 


# include<math.h> 
#include<malloc.h>


int main() 


{    int n,m,i; 
double k;
int* pre;
int num;
int index=0;
int a=2,b=2;
int mul;
scanf("%d",&num);
mul=num*num;
pre=(int*) malloc (num/2);


for(m=2;m<=num;m++) 


    {   k=sqrt(m); 


        for(i=2;i<=k;i++) 


           if(m%i==0) break; 


        if(i>k)  pre[index++]=m;


    } 
    
    pre[index]=0;



for(int j=0;j<index-1;j++)
{


for(int q=j+1;q<index;q++)
{
if(pre[j]+pre[q]==num)
 
{
if(pre[j]*pre[q]<mul)
{
a=pre[j];b=pre[q];mul=pre[j]*pre[q];
}
}
}
}


printf("%d %d\n",a,b);
    


     return 0;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值