如何在C语言中将6至50之间全部偶数表示为两个素数之和。求具体代码
答案:3 悬赏:80
解决时间 2021-01-15 05:21
- 提问者网友:蔚蓝的太阳
- 2021-01-14 09:19
如何在C语言中将6至50之间全部偶数表示为两个素数之和。求具体代码
最佳答案
- 二级知识专家网友:山有枢
- 2021-01-14 09:41
#include
int prime(int n){
int i;
if(n>2 && !(n&1) || n<2)
return 0;
for(i=3;i*i<=n;i+=2)
if(!(n%i))
return 0;
return 1;
}
int main(void){
int i,j;
for(i=6;i<51;i+=2)
for(j=2;j if(prime(j) && prime(i-j)){
printf("%d == %d + %d
",i,j,i-j);
break;
}
return 0;
}
int prime(int n){
int i;
if(n>2 && !(n&1) || n<2)
return 0;
for(i=3;i*i<=n;i+=2)
if(!(n%i))
return 0;
return 1;
}
int main(void){
int i,j;
for(i=6;i<51;i+=2)
for(j=2;j if(prime(j) && prime(i-j)){
printf("%d == %d + %d
",i,j,i-j);
break;
}
return 0;
}
全部回答
- 1楼网友:封刀令
- 2021-01-14 11:57
这个自己编呀,别人写的有什么用?做几个循环嵌套就完了。
- 2楼网友:话散在刀尖上
- 2021-01-14 11:05
#include
#include
#include "math.h"
void CreatePrime(int* prime) //生成一个50以内的素数数组
{
int i,j,k=0;
prime[k++]=2;
for(i=3;i<=50;i++)
{
int flag=0;
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
flag=1;
break;
}
}
if(flag==0)
{
prime[k++]=i;
}
}
}
int main(int argc, char *argv[])
{
int i,j,k;
int* prime;
prime=(int*)malloc(sizeof(int)*20); //定义一个数组,存储50内的素数
memset(prime,0,sizeof(int)*20);
CreatePrime(prime); //生成素数数组
for(i=6;i<=50;i+=2) //6到50中的偶数,琢个测试
{
for(j=0;j<20;j++)
{
for(k=0;k<20;k++)
{
if(prime[j]+prime[k]==i)
{
printf(" %2d=%2d+%2d",i,prime[j],prime[k]);
}
}
}
}
return 0;
}
#include
#include "math.h"
void CreatePrime(int* prime) //生成一个50以内的素数数组
{
int i,j,k=0;
prime[k++]=2;
for(i=3;i<=50;i++)
{
int flag=0;
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
flag=1;
break;
}
}
if(flag==0)
{
prime[k++]=i;
}
}
}
int main(int argc, char *argv[])
{
int i,j,k;
int* prime;
prime=(int*)malloc(sizeof(int)*20); //定义一个数组,存储50内的素数
memset(prime,0,sizeof(int)*20);
CreatePrime(prime); //生成素数数组
for(i=6;i<=50;i+=2) //6到50中的偶数,琢个测试
{
for(j=0;j<20;j++)
{
for(k=0;k<20;k++)
{
if(prime[j]+prime[k]==i)
{
printf(" %2d=%2d+%2d",i,prime[j],prime[k]);
}
}
}
}
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息