⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.h

📁 质数环,运行程序自动生成一定范围内的质数环,即相邻俩数之和为质数
💻 H
字号:
#include"iostream.h"
#include"math.h"
#define size 21
class zishu
{
	int * c;
	int a[size][size];
	int * mark;
	int path[size];
	int court;
	int l;          //判断是否为倒栈       和放到递归内一样 
public:
	zishu();
	void Y();

	int he(int i,int j);

	void bian_li(int start);

	void display(int q[]);
};
zishu::zishu()
{   int i;
	c=new int[size];
	mark=new int[size];
	for(i=1;i<size;i++)
		c[i]=i;
	Y();
	for(i=0;i<size;i++)
	{	mark[i]=0;path[i]=0;}
	path[0]=1;
	mark[0]=1;
	mark[1]=1;
	court=0;
	l=0;                                     
}
void zishu::Y()
{
		int i,j;
		for(i=0;i<size;i++)
		{a[i][0]=i;a[0][i]=i;}
		for(i=1;i<size;i++)
			for(j=1;j<size;j++)
			{	
			    if(he(c[i],c[j]))
				{	a[i][j]=1;
				}
				else
				{a[i][j]=0;}
			}
			a[1][1]=0;
			for(i=0;i<size;i++)
			{	for(j=0;j<size;j++)
			{	cout<<a[i][j];
			    if(a[i][j]>=10)
					cout<<" ";
				else
					cout<<"  ";
			}
			cout<<endl;
			}
}
int zishu::he(int i,int j)
{
		int sum;
		int k;
		int b=1;
		sum=i+j;
		for(k=2;k<sum;k++)
			if(sum%k==0)
		{	b=0;break;}
			return b;
}
void zishu::bian_li(int start)
{
	int i;
	int j;
//	cout<<v0;
//	mark[v0]=1;
//	i=1;
    if(l==1)
	i=path[court+1]+1;            //如为倒栈则跳过path[court+1]
	else
		i=1;                      //如不是则从头找未标记数
//	cout<<"#"<<court<<","<<start<<endl;
	if(court==size-2&&a[path[court]][1]==1)        //######
	{for(j=0;j<size-1;j++)
		cout<<path[j]<<"->";
	cout<<endl;}
/*	for(j=0;j<size;j++)
		if(mark[j]==0)
			cout<<j<<"->";
		cout<<endl;        */    
//	cout<<"#"<<i;
//	cout<<"**"<<court;
	while(i<size&&a[start][i]==0) i++;
//	cout<<"*"<<i;
	while(i<size)
	{
		if(mark[i]==0)
		{  
		mark[i]=1;path[++court]=i;l=0;
/*		if(court==19&&a[path[court]][1]==1)
		{	cout<<"#";
		display(path);
		i=size-1;}
		else                     应放到外面######处 */  
		bian_li(i);
		}
		i++;
		while(i<size&&a[start][i]==0) i++;
	}
		mark[path[court]]=0;
		court--;
		l=1;
}
void zishu::display(int q[])
{
	int i;
	q[20]=1;
	for(i=0;i<size;i++)
		cout<<q[i]<<"->";
	cout<<endl;
//	q[20]=0;
}
	








⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -