C语言 程序 素数圈圈
题目:将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语言 程序 素数圈圈相关推荐
- c语言输出整数n的所有素数因子,输入一个正整数 输出它的所有质数因子的c语言程序...
编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列. #includevoidmain(){inti,z,x,y,j;printf("pleaseinput ...
- 给出一个大于或等于3的正整数,判断它是不是一个素数,编写C语言程序
给出一个大于或等于3的正整数,判断它是不是一个素数,编写C语言程序 #include<stdio.h> #include<math.h> int main() { int i, ...
- c语言十万以内超级素数,用C语言求素数的优化
用C语言求素数的优化 这个程序运行了8个小时,求一亿以内的素数和超级素数. 大家帮忙看看,我求一亿以内的素数和超级素数.从下午5:30开始,一直到零晨0点30才结束.我的电脑配置也可以.INTER E ...
- 只能输入字母的c语言程序设计教程课后答案,c语言程序设计基础教程_习题答案20120319...
<c语言程序设计基础教程_习题答案20120319>由会员分享,可在线阅读,更多相关<c语言程序设计基础教程_习题答案20120319(54页珍藏版)>请在技术文库上搜索. 1 ...
- 经典C语言程序100例之八四
经典C语言程序100例之八四 如题 话不多说了,直接上代码 如题 [程序84] 题目:一个偶数总能表示为两个素数之和. 1.程序分析: 话不多说了,直接上代码 2.程序源代码: #include &q ...
- 经典C语言程序100例之三六
经典C语言程序100例之三六 如题 话不多说了,直接上代码 如题 [程序36] 题目:求100之内的素数 1.程序分析: 话不多说了,直接上代码 2.程序源代码: #include <stdio ...
- 经典C语言程序100例之十二
经典C语言程序100例之十二 如题 话不多说了,直接上代码 如题 [程序12] 题目:判断101-200之间有多少个素数,并输出所有素数. 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt( ...
- c语言程序中的错误可分为,《C语言程序设计(本)》模拟试卷1.doc
<C语言程序设计(本)>模拟试卷1 <C语言程序设计(本)>模拟试卷1 总分:100分 时间:90分钟 一.单项选择题 :(每题2分,共18分) 1.下列字符列中,可以作为&q ...
- c语言 程序循环,C语言程序设计-循环例子
<C语言程序设计-循环例子>由会员分享,可在线阅读,更多相关<C语言程序设计-循环例子(28页珍藏版)>请在人人文库网上搜索. 1.C 语言程序设计基础篇,第 7 章 简单程序 ...
最新文章
- JAVA面试题-小白
- LeetCode 1625. 执行操作后字典序最小的字符串(BFS)
- 城市运行一网统管_【宣传活动】持续开展城市运行“一网统管”建设宣传活动...
- java 编码解码_深入解析Java中的编码转换以及编码和解码操作
- 集成微信支付的代码。兼容小程序,扫码,app,公众号。h5 支付 ,以及 服务商提现...
- 移动开发 or web 前端?
- 数据库文档 SCREW 一键生成数据库文档
- 学plc还是学java_要学PLC想走PLC工程师之路的看看
- “分集”与“复用”辨析
- 基于Spring Boot的个人博客系统的设计与实现 毕业设计-附源码271611
- 后台管理----首页布局分析1
- 关于互联网的那些小创意
- Solidity 从入门到实战(一)
- 基于属性的访问控制(ABAC)定义与思考 ——ABAC的基本概念
- 计算机音乐关键词,音乐达人的几个关键词
- 11 | 你能写出正确的网址吗?
- 梦幻西游物价稳定的服务器,梦幻西游:服务器“绍兴兰亭”物价简介,值得五开玩家养老!~...
- 2023年5月电信高性价比流量卡推荐 不限速、费用低、流量多!
- (Matlab实现)蚂蚁狮子优化算法在电力系统中的应用
- JSP的优势和劣势 与php的比较
热门文章
- linux --chdir() 改变当前工作目录函数
- 如何加载3D模型(odj文件和mtl文件)
- GCC详解-Binutils工具之strip
- 金融风控-- >申请评分卡模型-- >特征工程(特征分箱,WOE编码)
- 无法安装64位版本的微软Office
- R语言ggplot2可视化:patchwork包(直接使用加号+)将一个ggplot2可视化结果和一段文本内容横向组合起来形成最终结果图、使用wrap_elements函数将文本内容放置在组合组左边
- Hidden Message
- ubuntu16.04安装PCRE库
- 愤世嫉俗的程序员,总在某乎发表言论,当起了“键盘侠”
- 使用matlab分析一段声音信号的均方根