1. c语言素数环问题的思路

http://www.java3z.com/cwbwebhome/article/article5/5817.html?id=1470

2. C语言 素数环问题

prime函数里,把条件判断x/y改为x%y

其它我没细看,有问题再告诉我吧。

3. C语言素数环

#include"stdio.h"
int shu(int n)
{
int i;
for(i=2;i<=n/2;i++)
if(n%i==0) return 0;
return 1;
}

main()
{
int a,b,c,d,e,f;
for(a=1;a<=9&&a!=5;a+=2)
for(b=1;b<=9&&b!=5;b+=2)
for(c=1;c<=9&&c!=5;c+=2)
for(d=1;d<=9&&d!=5;d+=2)
for(e=1;e<=9&&e!=5;e+=2)
for(f=1;f<=9&&f!=5;f+=2)
{
if((shu(100000*a+10000*b+1000*c+100*d+10*e+f)==1)&&
(shu(100000*b+10000*c+1000*d+100*e+10*f+a)==1)&&
(shu(100000*c+10000*d+1000*e+100*f+10*a+b)==1)&&
(shu(100000*d+10000*e+1000*f+100*a+10*b+c)==1)&&
(shu(100000*e+10000*f+1000*a+100*b+10*c+d)==1)&&
(shu(100000*f+10000*a+1000*b+100*c+10*d+e)==1))
printf(" 最小的素数环为:%d", 100000*a+10000*b+1000*c+100*d+10*e+f);
goto loop;
}
loop:getchar();
}

4. 素数环的介绍

素数环是一个计算机程序问题,指的是将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环。其中程序方面包括递归实现(C语言)和递归实现(C++),以及递归实现(Pascal)、非递归实现(Java)、回溯实现(php)等多种方法。

5. C语言素数环问题,求指出错误。

你能把这个程序的算法过程解释一遍吗?
你这个程序有不少问题啊。
比如:if(vis[i]==0&&isp[i+A[cur-1]]==1)

第一次,你的cur为0.这个时候A[cur-1]就是A[-1]了,这个根本就越界了。问题不少啊。

6. c语言素数环问题求改错,不要其他代码就帮我改一下

不清楚你是要求1-20所有长度的素数环还是要求长度为20的所有素数环

按照后者给你改了一版程序出来

需要注意的有两点

一个是由于要递归尝试下一个数值,所以用来存结果的数组必须要作为参数传进去

另一个 必须有一个数组作为标志 表示哪些数用过 因为1-20是不能重复使用的

最后说明一下 在你这个基础上改出来的是求长度为20的所有素数环 这是一个相当大的数量

截止回答时 我的机器还在继续往出打印

如果想只求出一组就退出运行 可以把search中n==20判断里面的return 改成exit(0) (注意要添加stdlib头文件)

代码如下

#include<stdio.h>
intsushu(inti);
voidsearch(inta[],intb[],intn);
//目测程序功能为求长度为20的素数环
inta[21];
intb[21];//用来标记某个数是否被用过

voidmain()
{inti;
//for(i=1;i<21;i++)//如果只是寻找固定的20个数,那么没必要循环
a[0]=b[0]=1;
search(a,b,1);//由于需要递归所以要把数组做为参数
// printf("result: ");//结果在search中输出

}
voidsearch(inta[],intb[],intn)
{intj,k,t;
if(n==20)
{
if(sushu(19))
{
for(j=0;j<20;j++)
printf("%d",a[j]);
printf(" ");
}
return;//只打印一组的话这里改成exit(0);
}

for(k=1;k<21;k++)
{
if(b[k]==1)continue;//数字k+1已用

a[n]=k+1;
b[k]=1;
if(sushu(n-1))
search(a,b,n+1);
b[k]=0;
}
}
intsushu(inti)
{
intj,b;
if(i==19)
a[20]=a[0];
for(j=2;j<a[i]+a[i+1];j++)
{b=(a[i]+a[i+1])%j;
if(b==0)
return0;}
if(a[i]+a[i+1]==j)
return1;

}

7. C语言素数环优化

是不是等待输入也计算时间了,那超时就很不好说了。。。。。。。如果真那样,就不让输入,使用默认的数

~
~
~

8. 菜鸡求教C语言素数环有关问题

#include<math.h>
intmain(){
intm;//输入的整数
inti;//循环次数
intk;//m的平方根
printf("输入一个整数:");
scanf("%d",&m);
//求平方根,注意sqrt()的参数为double类型,这里要强制转换m的类型
k=(int)sqrt((double)m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
//如果完成所有循环,那么m为素数
//注意最后一次循环,会执行i++,此时i=k+1,所以有i>k
if(i>k)
printf("%d是素数。 ",m);
else
printf("%d不是素数。 ",m);
return0;
}

9. C语言素数环问题:输入n,输出n以内的素数环。我感觉思路是对的,怎么没有输出,请大侠看看!

#include<stdio.h>
#include<string.h>
int is_prime(int x)
{
int i,flag;
for(i=2;i<=x/2;i++)
if(x%i==0)
return 0;
return 1;
}
void dfs(int n,int *a,int *isp,int *vis,int cur)
{
if(cur==n&&isp[a[0]+a[n-1]])
{
for(int i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return ;
}
else
for(int i=1;i<=n;i++)
if(!vis[i]&&isp[i+a[cur-1]])//如果i没有用过,并且与前一个数之和为素数
{
a[cur]=i;
vis[i]=1;
dfs(n,a,isp,vis,cur+1);
vis[i]=0;
}
}
int main()
{ int i,n,a[100],isp[100],vis[100];
memset(vis,0,sizeof(vis));
memset(isp,0,sizeof(isp));
scanf("%d",&n);
for(i=0;i<n;i++)
a[i]=i+1;
for(i=1;i<100;i++)
isp[i]=is_prime(i);
dfs(n,a,isp,vis,0);
return 0;
}
判断素数有问题

10. 素数环为20时有几种