首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
素数环 -- C++实现
时间:
2015-04-21 22:41:24
阅读:
583
评论:
0
收藏:
0
[点我收藏+]
标签:
问题描述:将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,
结果均为素数,那么这个环就成为素数环。
n=20时,下面的序列就是一个素数环:
1 2 3 4 7 6 5 8 9 10 13 16 15 14 17 20 11 12 19 18
英文名:Prime Ring Problem
解题分析:
对于这样的问题, 我的想法就是首先要判断每个数是否是素数,
接着继续判断如何是否相邻的两个数的和是素数。
代码:
#include <iostream>
#include <cstdio>
#include <cmath>
#define MAXN 20
using namespace std;
int ring[MAXN], b[MAXN];
int isPrime(int n)
{
int t, f = 1;
t = sqrt(n);
for(int i = 2; i <= t; i++)
if(n % i == 0)
{
f = 0;
break;
}
return f;
}
int primeRing(int ring[], int b[], int n)
{
if(n == MAXN)
return isPrime(ring[n - 1] + ring[0]);
printf("\nCalculating ring[%d] = ", n);
for(int i = 1; i < MAXN; i++)
{
if( b[i] == 0 && isPrime((i + 1) + ring[n - 1]))
{
b[i] = 1;
ring[n] = i + 1;
printf("%d ", ring[n]);
if( primeRing(ring, b, n + 1) )
return 1;
else
b[i] = 0;
}
}
return 0;
}
int main()
{
ring[0] = 1;
b[0] = 1;
if( primeRing(ring, b, 1) )
{
printf("\n\nThe prime ring is : ");
for(int i = 0; i < MAXN; i++)
printf("%d", ring[i]);
printf("\n");
}
else
printf("\n\nNot found!\n");
return 0;
}
素数环 -- C++实现
标签:
原文地址:http://blog.csdn.net/u012965373/article/details/45175999
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!