基于visual Studio2013解决C语言竞赛题之1085相邻之和素数
题目
解决代码及点评
/************************************************************************/
/* 85. 相邻数之和为素数。
将1,2,3,4,... ,19,20这20个自然数排成一圈,使每两个相邻数之和都为素数。问这20个数应如何排列?
这道题和字符串全排列有些类似
不同的是要加判断素数条件
这道题和字符串全排列有些类似
不同的是要加判断素数条件
因为数字较小所以把1-40的素数都排到一起了 */
/************************************************************************/
#include <stdio.h>
#include <stdlib.h>
void swap85(int& a,int& b)
{
int tmp = a;
a = b;
b = tmp;
}
bool IsAPrime85(int n)
{
static int prime[]={2,3,5,7,11,13,17,19,23,29,31,37};// 0-40以内的素数
for(int i=0;i<sizeof(prime)/sizeof(prime[0]);i++) if( n==prime[i] )
{
return true;
}
return false;
} int thearr[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
void print_it85(int n,int arr[])
{
static int cnt = 0;
printf("%04d : ",++cnt);
for(int i=0;i<n;i++)
printf("%2d ",arr[i]);
printf("\n");
}
void MySuShu85(int n,int time)
{
if( time==n )
{
if( IsAPrime85(thearr[0]+thearr[n-1]) ) print_it85(n,thearr);
return;
}
else
{
for(int i=time;i<n;i++ ) if( IsAPrime85(thearr[time-1]+thearr[i]) )
{
swap85(thearr[time],thearr[i]);
MySuShu85(n,time+1);
swap85(thearr[time],thearr[i]);
}
}
} void main()
{
MySuShu85(20,1);
}
代码编译以及运行
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
程序运行结果
代码下载
http://download.csdn.net/detail/yincheng01/6681845
解压密码:c.itcast.cn
基于visual Studio2013解决C语言竞赛题之1085相邻之和素数的更多相关文章
- 基于visual Studio2013解决C语言竞赛题之0409 100以内素数
题目 解决代码及点评 在已经知道素数是怎么判断的基础上,增加循环,可以判断出100以内的素数 /******************************************* ...
- 基于visual Studio2013解决C语言竞赛题之0520相邻元素
题目
- 基于visual Studio2013解决C语言竞赛题之0408素数
题目 解决代码及点评 判断一个数是不是素数的方法,一般是看n是不是能被n以内的某个整数(1除外)整除 为了提高效率,这个整数范围一般缩小到n的平方根 如果在这个范围内的整数都不能整除,那么 ...
- 基于visual Studio2013解决C语言竞赛题之0401阶乘
题目 解决代码及点评 这个是一道经典的教科书题目,基本上每本基础的c/c++语言教科书都会有这个题目 用来演示循环语句 #include <stdio.h> #include ...
- 基于visual Studio2013解决C语言竞赛题之0205位数求和
题目
- 基于visual Studio2013解决C语言竞赛题之0201温度转换
题目 解决代码及点评 #include <stdio.h> #include <stdlib.h> void main() { float f; float c; float ...
- 基于visual Studio2013解决C语言竞赛题之0407最大值最小值
题目 解决代码及点评 这道题考察循环和比较 /*********************************************************************** ...
- 基于visual Studio2013解决C语言竞赛题之0406数列求和
题目 解决代码及点评 这个题目,还是考察for循环的使用 以及数列规律,该数列的特点是第n个分子 = 第n-1个分子 + 第n-2个分子,分母也是此规律 而另外一个规律是第n个分子和第n- ...
- 基于visual Studio2013解决C语言竞赛题之0405阶乘求和
题目 解决代码及点评 这道题和上一道题类似,第n个累加项 = n-1累加项的n倍 由于有这个规律,我们可以用一个for循环实现 但是例子代码并没有这么做,大家可以回去修改下代码,使得代码更 ...
随机推荐
- vb.net 字符串的操作 应用
Module Module1 Sub Main() ' 定义3个字符串变量 Dim str1, str2, str3 As String '给str1,str2付初值 str1 = "Hel ...
- spark sql 基本用法
一.通过结构化数据创建DataFrame: publicstaticvoid main(String[] args) { SparkConf conf = new SparkConf() .se ...
- BZOJ 3275: Number( 最小割 )
S->每个奇数,每个偶数->T各连一条边, 容量为这个数字.然后不能同时选的两个数连容量为+oo的边. 总数-最大流即是答案. 因为满足a2+b2=c2的a,b一定是一奇一偶或者两个偶数, ...
- js默认行为(也称默认事件)
对应于智能社21课, 在浏览器的空白页面右击时会出现一个提示框,实际上这是用的document.oncontextmenu属性,如果用下面的代码就能够阻止这样的默认行为: <!DOCTYPE h ...
- MyEclipse 引用其他项目及其jar包
倘若在工作区有两个项目A和B,B项目引用A项目及其jar包(防止调用时A项目的方法出现NoClassFound),步骤如下: 在A项目上点右键看属性,点击Build Path--->Concon ...
- Mirantis OpenStack HA
Mysql使用Galera做Active/Active集群,同时使用Pacemaker,因为Galera mysql用到了领导机选举机制quorum,所以控制节点至少三个 RabbitMQ使用mirr ...
- jQuery prop 全选和全不全
$('#ckAll').click(function() { var value = $(this).is(':checked') ? true : false; $("input[name ...
- arm: 使用结构体操作寄存器
使用结构体操作寄存器: //寄存器赋值和取值的时候,要注意寄存器的长度,有的寄存器的值只有8位. //还要注意,使用volatile修饰寄存器变量.volatile 参考http://www.cnbl ...
- MySQL新建用户,授权,删除用户,修改密码等命令
首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的. 注:本操作是在WIN命令提示符下,phpMyAdmin同样适用. 用户:phplamp 用户数 ...
- typedef 总结
其实在正儿八经学C语言的时候typedef用的不是很多,记得书上对它的介绍只是一笔带过.的确它的用法是很简单,但这不代表在使用的过程中不会出错,今天来个彻底的总结. 作用:用来建立新的数据类型名.(注 ...