㈠ c语言程序,哥德巴赫猜想:任何大于5的奇数都可以表示为三个素数之和, 并输出被验证数的所有可能形式。
#include<stdio.h>
void main(void)
{
int prime(int);
int n,i,j,k;
scanf("斗告%d",&n);
for(i=2;i<=n-4;i++)
for(j=i;j<=n-i*2;j++)
for(k=j;k<做销伍=n-i-j;k++)
if(i+j+k==n&&prime(i)&&prime(j)&&prime(k))
printf("%d= %d+%d+%d\n",n,i,j,k);
}
int prime(int n)
{
int i;
for(i=2;i<n;i++)
if(!(n%i))break;
return n>纯或1&&i>=n;
}
㈡ C语言求质数之和
#include<stdio.h>
int IsPrime(int n)
{
int i;
for(i=2;i<n;i++)
if(n%i==0) return 0;
else continue;
return 1;
}
int Sum(int n)
{
int i,sum=2;
if(n<2)return 0;
else if(n==2)return 2;
else
{
for(i=3;i<模羡悄=n;i+=2)
{
sum+=IsPrime(i)?i:0;
}
return sum;
}
}
main()
{
int n;
printf("输入一个最大数旦渣: ");
scanf("%d",&n);
printf("比%d小的所有质派孙数之和SUM=%d ",n,Sum(n));
getchar();
}
㈢ 一个奇数怎么分解成三个素数相加,用c++
并非所有奇数,必须是大于9的奇数
#include<cstdio>#include<vector>#include<cmath>usingnamespacestd;intmain(){
intn;
scanf("%d",&n);
vector<int>zs;//枚举2到n之间的全部质数
zs.push_back(2);
for(inti=3;i<n;i+=2){
for(intj=2;j<=sqrt(i);j++){
if(i%j==0)gotoa1;
}
zs.push_back(i);
a1:;
}
败漏迟察李intd=zs.size();
intt1=0,t2=0,t3=d-1;
while(zs[t1]+zs[t2]+zs[t3]!=n){
if(zs[t1]+zs[t2]+zs[t3]>搜雀n){
t3--;
}
if(zs[t1]+zs[t2]+zs[t3]<n){
t2++;
}
if(t3<=t2){
t1++;
t2=t1;
t3=d-1;
}
}
printf("%d%d%d",zs[t1],zs[t2],zs[t3]);
return0;
}
㈣ 每个不小于9的奇数都是三个奇素数(奇素数就是不包含2的素数)之和。用c语言怎么实现啊
#include<stdio.h>
#include<math.h>
intisprime(intn)
{
inti;
if(n==2)
return0;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
return0;
}
return1;
}
int改慧main()
{
intnum,i,j,k,n=0;
intnumber[100]={0};
while(scanf("%d",&兆悄num),num!=0)
{
for(i=3;i<num;i++)
{
for(j=i;j<num;j++)
{
for(k=j;k<num;k++)
{
if(i+j+k==num&&isprime(i)&族歼渣&isprime(j)&&isprime(k))
{
number[n]++;
}
}
}
}
n++;
}
for(i=0;i<n;i++)
{
if(number[i]!=0)
printf("%d ",number[i]);
else
printf("Error ");
}
return0;
}