geray_king @ 2019-01-05 00:07:28
bool isprime(int x)
{
for(int i=2;i<=sqrt(x);i++)
if(x%i==0)return false;
return true;
}
int main()
{int n,l=0;
scanf("%d",&n);
int check[20000]={0},su[2265];
int cnt;
for(int i=2;i<=20000;++i)
{
if(!check[i])
{
su[l++]=i;
}
for(int j=i;j<=20000;j+=i)
{
check[j]=1;
}
} for(int i=0;su[i]<6661;i++) { for(int u=0;su[u]<6661;u++) { cnt=n-su[i]-su[u]; if(isprime(cnt)) {printf("%d %d %d",su[i],su[u],cnt); return 0; } } } return 0; }
by geray_king @ 2019-01-05 00:09:15
#include<stdio.h>
#include<stdbool.h>
#include<math.h>
bool isprime(int x)
{
for(int i=2;i<=sqrt(x);i++)
if(x%i==0)return false;
return true;
}
int main()
{int n,l=0;
scanf("%d",&n);
int check[20000]={0},su[2265];
int cnt;
for(int i=2;i<=20000;++i)
{
if(!check[i])
{
su[l++]=i;
}
for(int j=i;j<=20000;j+=i)
{
check[j]=1;
}
}
for(int i=0;su[i]<6661;i++)
{
for(int u=0;su[u]<6661;u++)
{
cnt=n-su[i]-su[u];
if(isprime(cnt))
{printf("%d %d %d",su[i],su[u],cnt);
return 0;
}
}
}
return 0;
}
by geray_king @ 2019-01-05 00:09:35
@geray_king 不好意思,这是代码,第一次发帖不太懂
by geray_king @ 2019-01-05 00:10:33
@geray_king 2-10都过了,就第一过不了,如果把2从素数中移除#1过了,#4,#5,#8过不了,求解
by disangan233 @ 2019-01-05 08:07:22
@geray_king 自己回复自己可还行
by 星河·莫 @ 2019-01-05 08:08:57
@geray_king
能打注释吗?
by geray_king @ 2019-01-05 13:52:13
@星河·莫 好的,我再发一遍,不好意思。
by geray_king @ 2019-01-05 13:54:51
#include<stdio.h>
#include<stdbool.h>
#include<math.h>
bool isprime(int x)//判断是否是质数
{
for(int i=2;i<=sqrt(x);i++)
if(x%i==0)return false;
return true;
}
int main()
{int n,l=0;
scanf("%d",&n);
int check[20000]={0},su[2265];//2265为20000质数的个数
int cnt;
for(int i=2;i<=20000;++i)//这两个循环找出20000内的素数储存进su[]里面
{
if(!check[i])
{
su[l++]=i;
}
for(int j=i;j<=20000;j+=i)
{
check[j]=1;
}
}
for(int i=0;su[i]<6661;i++)//选出第一个素数
{
for(int u=0;su[u]<6661;u++)//选出第二个素数
{
cnt=n-su[i]-su[u];
if(isprime(cnt))//判断减去两个素数之后的数是否为质数
{printf("%d %d %d",su[i],su[u],cnt);
return 0;
}
}
}
return 0;
}
by geray_king @ 2019-01-05 13:55:34
@disangan233 因为不知道怎么修改帖子内容(手动滑稽