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時有幾種