素数环 -- C++实现
结果均为素数,那么这个环就成为素数环。
解题分析:
对于这样的问题, 我的想法就是首先要判断每个数是否是素数,
接着继续判断如何是否相邻的两个数的和是素数。
代码:
#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;
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。