程序分为两部分
1。求素数(http://blog.pfan.cn/wentao/22158.html)
2。偶数分解为两个素数之和
#include <stdio.h>
#include <math.h>
#define MAX 1000
int main(void)
{
int s=6;
int n=0;
int b[MAX+1];
int i;
int j;
int a[MAX+1]; // 为直观表示,各元素与下标对应,0号元素不用
for (i=1; i<=MAX; i++) // 数组各元素赋值
a[i]=i;
for (i=2; i<sqrt(MAX); i++) // 外循环使i作为除数
for (j=i+1; j<=MAX; j++) // 内循环检测除数i之后的数是否为i的倍数
{
if (a[i]!=0 && a[j]!=0) // 排除0值元素
if (a[j]%a[i]==0)
{
a[j]=0; // i后数若为i的倍数,刚将其置0(挖去)
n++;
}
}
//以上源代码抄自http://blog.pfan.cn/wentao/22158.html
//以下为原创
for(i=1,j=3;j<=MAX;j++) //原数组非0值元素转移至新数组
{
if(a[j]!=0)
{
b[i]=a[j];
i++;
}
}
/*
printf("%d/n",MAX-2-n);
for(i=1;i<=(MAX-2-n);i++)
{
printf("%5d",b[i]);
}
*/
//偶数分解为两个素数之和
for(i=1;s<=MAX;i++)
{
for(j=1;s<=MAX;j++)
{
if(b[i]+b[j]==s)
{
printf("%d=%d+%-5d/t",s,b[i],b[j]);
s+=2;
}
if(b[i]+b[j]>s)break;
}
if(b[i]>s)
i=1;
}
}
-----------------------------------------------------------------------------------------
我编的另一个版本
#include <stdio.h>
#include <math.h>
#define MAX 1000
int main(void)
{
int s=6;
int i;
int j;
int a[MAX+1]; // 为直观表示,各元素与下标对应,0号元素不用
for (i=1; i<=MAX; i++) // 数组各元素赋值
a[i]=i;
for (i=2; i<sqrt(MAX); i++) // 外循环使i作为除数
for (j=i+1; j<=MAX; j++) // 内循环检测除数i之后的数是否为i的倍数
{
if (a[i]!=0 && a[j]!=0) // 排除0值元素
if (a[j]%a[i]==0)
{
a[j]=0; // i后数若为i的倍数,刚将其置0(挖去)
}
}
//以下
a[1]=0;
for(i=3;s<=MAX;)
{
if(a[i]!=0)
{
if(a[s-a[i]]!=0)
{
j=s-a[i];
printf("%d=%d+%-5d/t",s,a[i],a[j]);
s+=2;
}
}
//if(a[i]>s) i=3;
if(a[i]==0||a[s-a[i]]==0) i+=2;
}
}
运行结果:
6=3+3 8=3+5 10=3+7 12=5+7 14=7+7
16=11+5 18=11+7 20=13+7 22=17+5 24=17+7
26=19+7 28=23+5 30=23+7 32=29+3 34=29+5
36=29+7 38=31+7 40=37+3 42=37+5 44=37+7
46=41+5 48=41+7 50=43+7 52=47+5 54=47+7
56=53+3 58=53+5 60=53+7 62=59+3 64=59+5
66=59+7 68=61+7 70=67+3 72=67+5 74=67+7
76=71+5 78=71+7 80=73+7 82=79+3 84=79+5
86=79+7 88=83+5 90=83+7 92=89+3 94=89+5
96=89+7 98=19+79 100=29+71 102=29+73 104=31+73
106=47+59 108=47+61 110=67+43 112=71+41 114=71+43
116=73+43 118=89+29 120=89+31 122=103+19 124=107+17
126=107+19 128=109+19 130=113+17 132=113+19 134=127+7
136=131+5 138=131+7 140=137+3 142=137+5 144=137+7
146=139+7 148=11+137 150=11+139 152=13+139 154=17+137
156=17+139 158=19+139 160=23+137 162=23+139 164=37+127
166=53+113 168=59+109 170=61+109 172=71+101 174=71+103
176=73+103 178=89+89 180=97+83 182=103+79 184=113+71
186=113+73 188=127+61 190=131+59 192=131+61 194=151+43
196=167+29 198=167+31 200=181+19 202=191+11 204=191+13
206=193+13 208=197+11 210=197+13 212=199+13 214=211+3
216=211+5 218=211+7 220=23+197 222=23+199 224=31+193
226=47+179 228=47+181 230=67+163 232=83+149 234=83+151
236=97+139 238=101+137 240=101+139 242=103+139 244=107+137
246=107+139 248=109+139 250=113+137 252=113+139 254=127+127
256=149+107 258=149+109 260=151+109 262=173+89 264=181+83
266=193+73 268=197+71 270=197+73 272=199+73 274=227+47
276=229+47 278=241+37 280=251+29 282=251+31 284=271+13
286=281+5 288=281+7 290=283+7 292=11+281 294=11+283
296=13+283 298=17+281 300=17+283 302=19+283 304=23+281
306=23+283 308=31+277 310=41+269 312=41+271 314=43+271
316=47+269 318=47+271 320=79+241 322=83+239 324=83+241
326=97+229 328=101+227 330=101+229 332=103+229 334=107+227
336=107+229 338=109+229 340=113+227 342=113+229 344=151+193
346=167+179 348=167+181 350=193+157 352=239+113 354=241+113
356=277+79 358=311+47 360=313+47 362=331+31 364=347+17
366=347+19 368=349+19 370=353+17 372=353+19 374=367+7
376=373+3 378=373+5 380=373+7 382=379+3 384=379+5
386=379+7 388=383+5 390=383+7 392=389+3 394=389+5
396=389+7 398=19+379 400=41+359 402=43+359 404=67+337
406=89+317 408=97+311 410=97+313 412=101+311 414=101+313
416=103+313 418=107+311 420=107+313 422=109+313 424=113+311
426=113+313 428=151+277 430=167+263 432=181+251 434=193+241
436=197+239 438=197+241 440=199+241 442=251+191 444=251+193
446=283+163 448=311+137 450=311+139 452=313+139 454=317+137
456=317+139 458=331+127 460=347+113 462=349+113 464=367+97
466=383+83 468=389+79 470=397+73 472=401+71 474=401+73
476=409+67 478=419+59 480=419+61 482=421+61 484=431+53
486=433+53 488=457+31 490=461+29 492=461+31 494=463+31
496=467+29 498=467+31 500=487+13 502=491+11 504=491+13
506=499+7 508=503+5 510=503+7 512=509+3 514=509+5
516=509+7 518=19+499 520=29+491 522=31+491 524=37+487
526=47+479 528=61+467 530=67+463 532=71+461 534=71+463
536=73+463 538=89+449 540=97+443 542=103+439 544=113+431
546=113+433 548=127+421 550=131+419 552=131+421 554=157+397
556=167+389 558=179+379 560=181+379 562=251+311 564=251+313
566=283+283 568=311+257 570=313+257 572=331+241 574=347+227
576=347+229 578=349+229 580=353+227 582=353+229 584=373+211
586=389+197 588=389+199 590=397+193 592=401+191 594=401+193
596=433+163 598=449+149 600=449+151 602=463+139 604=467+137
606=467+139 608=499+109 610=503+107 612=503+109 614=541+73
616=557+59 618=557+61 620=577+43 622=593+29 624=593+31
626=607+19 628=617+11 630=617+13 632=619+13 634=631+3
636=631+5 638=631+7 640=23+617 642=23+619 644=31+613
646=47+599 648=47+601 650=73+577 652=83+569 654=83+571
656=109+547 658=137+521 660=137+523 662=139+523 664=173+491
666=179+487 668=181+487 670=191+479 672=193+479 674=211+463
676=227+449 678=229+449 680=241+439 682=251+431 684=251+433
686=277+409 688=419+269 690=419+271 692=421+271 694=431+263
696=433+263 698=457+241 700=461+239 702=461+241 704=463+241
706=467+239 708=467+241 710=487+223 712=521+191 714=521+193
716=523+193 718=569+149 720=569+151 722=571+151 724=587+137
726=587+139 728=601+127 730=617+113 732=619+113 734=631+103
736=647+89 738=659+79 740=661+79 742=683+59 744=683+61
746=709+37 748=719+29 750=719+31 752=733+19 754=743+11
756=743+13 758=751+7 760=757+3 762=757+5 764=757+7
766=761+5 768=761+7 770=13+757 772=29+743 774=31+743
776=37+739 778=59+719 780=61+719 782=73+709 784=83+701
786=103+683 788=127+661 790=131+659 792=131+661 794=151+643
796=179+617 798=179+619 800=181+619 802=233+569 804=233+571
806=283+523 808=317+491 810=331+479 812=349+463 814=353+461
816=353+463 818=379+439 820=389+431 822=389+433 824=457+367
826=467+359 828=479+349 830=499+331 832=521+311 834=521+313
836=523+313 838=557+281 840=557+283 842=571+271 844=587+257
846=607+239 848=607+241 850=617+233 852=619+233 854=631+223
856=659+197 858=659+199 860=661+199 862=683+179 864=683+181
866=709+157 868=719+149 870=719+151 872=733+139 874=743+131
876=769+107 878=769+109 880=773+107 882=773+109 884=787+97
886=797+89 888=809+79 890=811+79 892=821+71 894=821+73
896=823+73 898=827+71 900=827+73 902=829+73 904=857+47
906=859+47 908=877+31 910=881+29 912=881+31 914=883+31
916=887+29 918=887+31 920=907+13 922=911+11 924=911+13
926=919+7 928=17+911 930=19+911 932=73+859 934=107+827
936=107+829 938=109+829 940=113+827 942=113+829 944=157+787
946=173+773 948=179+769 950=181+769 952=191+761 954=193+761
956=199+757 958=239+719 960=241+719 962=271+691 964=281+683
966=283+683 968=307+661 970=311+659 972=311+661 974=313+661
976=317+659 978=317+661 980=337+643 982=383+599 984=383+601
986=409+577 988=419+569 990=419+571 992=421+571 994=431+563
996=433+563 998=457+541 1000=479+521