题目:将1,2,3,。。。,20这20个连续的自然数排成一圈,使任意两个相邻的自然数之和均为素数。

分析:用两个数组,一个数组判断是否使用过这个数,一个数组存储这个圈。在找不到与前面的数相加为素数并没有使用过时,用i--,再看前面的数。

下面是我写的程序:

#include <stdio.h>

int prime_num(int num)//判断是否为素数
{
    int i;

for(i = 2; i <= num / 2; i++)
    {
        if(num % i == 0)
{
   return 0;
}
    }

return 1;
}

int main()
{
    int tmp[20] = {0};//判断i,使用过i-1为-1,没使用过为0
    int num[20] = {0};//存储圈

int i;
    int j;

int flag = 0;//在往前找的时候,标记之前使用的数

num[0] = 1;
    tmp[0] = -1;

for(i = 1; i < 20;)
    {
for(j = 2; j <= 20; j++)
{
   if(j > flag && prime_num(num[i - 1] + j) == 1 && tmp[j - 1] == 0)//第一次找符合和为素数且没有使用过
   {
num[i] = j;
tmp[j - 1] = -1;//使用过了
flag = 0;
//printf("tmp[19]=%d\n",tmp[19]);
//getchar();
//printf("j = %d\n",j);
break;
            }
}
if((j == 21) || (i == 19 && prime_num(num[0] + num[19]) == 0))//找不到,或者最后一个不满足条件,往前循环
{
   if(i == 19 && prime_num(num[0] + num[19]) == 0)
   {
       tmp[num[i] - 1] = 0;
   }
   i--;  
   tmp[num[i] - 1] = 0;
   flag = num[i];
   //printf("flag =%d \n",flag);
}
else
{
   i++;
}
    }

for(i = 0; i < 20; i++)//输出
    {
        printf("%d ",num[i]);
    }
    printf("\n");

return 0;
}

总觉得有更好的算法,但没有思路。

一个在努力中的未来程序员,如果有更好的想法,欢迎评论

C语言 程序 素数圈圈相关推荐

  1. c语言输出整数n的所有素数因子,输入一个正整数 输出它的所有质数因子的c语言程序...

    编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列. #includevoidmain(){inti,z,x,y,j;printf("pleaseinput ...

  2. 给出一个大于或等于3的正整数,判断它是不是一个素数,编写C语言程序

    给出一个大于或等于3的正整数,判断它是不是一个素数,编写C语言程序 #include<stdio.h> #include<math.h> int main() { int i, ...

  3. c语言十万以内超级素数,用C语言求素数的优化

    用C语言求素数的优化 这个程序运行了8个小时,求一亿以内的素数和超级素数. 大家帮忙看看,我求一亿以内的素数和超级素数.从下午5:30开始,一直到零晨0点30才结束.我的电脑配置也可以.INTER E ...

  4. 只能输入字母的c语言程序设计教程课后答案,c语言程序设计基础教程_习题答案20120319...

    <c语言程序设计基础教程_习题答案20120319>由会员分享,可在线阅读,更多相关<c语言程序设计基础教程_习题答案20120319(54页珍藏版)>请在技术文库上搜索. 1 ...

  5. 经典C语言程序100例之八四

    经典C语言程序100例之八四 如题 话不多说了,直接上代码 如题 [程序84] 题目:一个偶数总能表示为两个素数之和. 1.程序分析: 话不多说了,直接上代码 2.程序源代码: #include &q ...

  6. 经典C语言程序100例之三六

    经典C语言程序100例之三六 如题 话不多说了,直接上代码 如题 [程序36] 题目:求100之内的素数 1.程序分析: 话不多说了,直接上代码 2.程序源代码: #include <stdio ...

  7. 经典C语言程序100例之十二

    经典C语言程序100例之十二 如题 话不多说了,直接上代码 如题 [程序12] 题目:判断101-200之间有多少个素数,并输出所有素数. 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt( ...

  8. c语言程序中的错误可分为,《C语言程序设计(本)》模拟试卷1.doc

    <C语言程序设计(本)>模拟试卷1 <C语言程序设计(本)>模拟试卷1 总分:100分 时间:90分钟 一.单项选择题 :(每题2分,共18分) 1.下列字符列中,可以作为&q ...

  9. c语言 程序循环,C语言程序设计-循环例子

    <C语言程序设计-循环例子>由会员分享,可在线阅读,更多相关<C语言程序设计-循环例子(28页珍藏版)>请在人人文库网上搜索. 1.C 语言程序设计基础篇,第 7 章 简单程序 ...

最新文章

  1. JAVA面试题-小白
  2. LeetCode 1625. 执行操作后字典序最小的字符串(BFS)
  3. 城市运行一网统管_【宣传活动】持续开展城市运行“一网统管”建设宣传活动...
  4. java 编码解码_深入解析Java中的编码转换以及编码和解码操作
  5. 集成微信支付的代码。兼容小程序,扫码,app,公众号。h5 支付 ,以及 服务商提现...
  6. 移动开发 or web 前端?
  7. 数据库文档 SCREW 一键生成数据库文档
  8. 学plc还是学java_要学PLC想走PLC工程师之路的看看
  9. “分集”与“复用”辨析
  10. 基于Spring Boot的个人博客系统的设计与实现 毕业设计-附源码271611
  11. 后台管理----首页布局分析1
  12. 关于互联网的那些小创意
  13. Solidity 从入门到实战(一)
  14. 基于属性的访问控制(ABAC)定义与思考 ——ABAC的基本概念
  15. 计算机音乐关键词,音乐达人的几个关键词
  16. 11 | 你能写出正确的网址吗?
  17. 梦幻西游物价稳定的服务器,梦幻西游:服务器“绍兴兰亭”物价简介,值得五开玩家养老!~...
  18. 2023年5月电信高性价比流量卡推荐 不限速、费用低、流量多!
  19. (Matlab实现)蚂蚁狮子优化算法在电力系统中的应用
  20. JSP的优势和劣势 与php的比较

热门文章

  1. linux --chdir() 改变当前工作目录函数
  2. 如何加载3D模型(odj文件和mtl文件)
  3. GCC详解-Binutils工具之strip
  4. 金融风控-- >申请评分卡模型-- >特征工程(特征分箱,WOE编码)
  5. 无法安装64位版本的微软Office
  6. R语言ggplot2可视化:patchwork包(直接使用加号+)将一个ggplot2可视化结果和一段文本内容横向组合起来形成最终结果图、使用wrap_elements函数将文本内容放置在组合组左边
  7. Hidden Message
  8. ubuntu16.04安装PCRE库
  9. 愤世嫉俗的程序员,总在某乎发表言论,当起了“键盘侠”
  10. 使用matlab分析一段声音信号的均方根