① c語言素數環問題的思路
http://www.java3z.com/cwbwebhome/article/article5/5817.html?id=1470
② C語言求素數和
main()
{
int i,m,j; //增加一個變數,見後面說明
for(i=2;i<=100;i++)
{m=sqrt(i);
//for(i=2;i<=m;i++) 這里i值被重新賦值,你原來的i值找不到了!如果是素數,怎麼輸出呢?
for(j=2;j<=m;j++) //換一個變數,不要影響要檢查的數據i
if(j%m!=0) //改成j
; //這樣寫,會讓你更清楚,這句如果j不能整除m,就啥也不幹,象你所說回到下一個循環檢查。
else
break; //加上這兩句,如果能整除則說明:i不是素數!!就不要再去檢查了。
if ( j > m ) //加上這句,如果檢查所有的j全部不能整除m,循環結束後,j一定大於m,這時的i才是素數
printf("%d",i);
}
getch();
}
③ c語言素數並求和
#include <stdio.h>
int isPrime(int n)
{
int i;
for(i = 2; i * i <= n; i = (i + 1) | 1)
if(n % i == 0)
return 0;
return n > 1;
}
int main(void)
{
int sum = 0, i = 0;
for( ; i <= 500; i++)
if(isPrime(i))
{
sum += i;
printf("%d\t", i);
}
printf("\nsum = %d\n", sum);
return 0;
}
④ (c語言)求素數和
你s=s+x;
放的位置不對,應該這樣放:
#include
void
main()
{
int
x,n=10,i,s=0;
for(x=3;x<=n;x++)
{
for(i=2;i
=x)
{
printf("%d+",x);
s=s+x;
}
}
printf("\b=%d\n",s);
}
補充:
在用外層的for計算下一個的時候,要把內層for判斷出來的素數累加起來啊
否則,計算到下一個的時候,前一個就丟了啊
所以,累加的那句代碼,應該在外層for循環的裡面,內存for循環的外面(後面)啊
⑤ c語言使用函數求素數和
您好,很高興回答您的問題。
對於您的這個問題,有兩個方面的知識點需要掌握,一是素數的判斷標准,我們知道只能被1和數本身整除的數叫素數,具體實踐時就要用到循環結構;而是函數的調用,要清楚調用函數的結構和使用方法,才能用好調用。
以上兩個問題解決了,那麼這個程序就可以實現功能了。還有關鍵的一點就是您沒有給出具體的范圍,也就是求哪個范圍內的素數之和呢,沒有這個范圍,也就沒有辦法求出和了。
⑥ 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();
}
⑦ 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;
}
⑧ 菜雞求教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;
}
⑨ C語言素數環優化
是不是等待輸入也計算時間了,那超時就很不好說了。。。。。。。如果真那樣,就不讓輸入,使用默認的數
~
~
~