c++编程:将1,2,3,4..20这20个连续自然数排成一圈,使任意两个相邻自然数之和均为素数.尽量使程序执行效率高
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/21 01:28:19
xSRP~1z'"Qh#^t:
gT
? x\I0ԛdwo'XZcOǬ_oy7 I@$3syG-h~bӌJ
eՁ6v,GCv/hSaB_У<+Jpe5B˗X
Rwmu
ۦR9 \p,wPKkWrl5xfq9Yk|7Zo_PDoTP ߠ]Z߳DamαG=
y=Ģ
~|DcjxC҈m0iaԦ 2"5xt_@)d$
xJRH\<
A
!I,o[#,!;<˃Wd!UU{x|n`a>UZhZPh6ӆse-FeAmq
c++编程:将1,2,3,4..20这20个连续自然数排成一圈,使任意两个相邻自然数之和均为素数.尽量使程序执行效率高
c++编程:将1,2,3,4..20这20个连续自然数排成一圈,使任意两个相邻自然数之和均为素数.
尽量使程序执行效率高
c++编程:将1,2,3,4..20这20个连续自然数排成一圈,使任意两个相邻自然数之和均为素数.尽量使程序执行效率高
要使效率高,那就不能用递归函数,而要自己去迭代.
#include "stdio.h"
void main()
{
//设一个查找表,可以快速地判断某数是否为素数
bool prime[40]={
0,0,1,1,0,1,0,1,0,0,
0,1,0,1,0,0,0,1,0,1,
0,0,0,1,0,0,0,0,0,1,
0,1,0,0,0,0,0,1,0,0
};
//快速判断哪些数已经被选中
bool used[21]={0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//a[0]无用,a[1]到a[20]分别存放选出的数
//因为考虑到题目要求的循环性
//所有的解都可以位移使得1出现在a[1]位置
//所以我们就直接规定1放在a[1]
int a[21]={0,1};
//已经选中的数的个数,
int cnt=1;
//当发生无数可选的情况时,需要回退一步
//此变量用来表示是否发生了回退
bool tag=false;
int i;
while(cnt