㈠ c語言求1到n所有質數
按照題目要求編寫的程序如下(見圖)
㈡ C語言計算質數
#include<stdio.h>
staticcharm[8000000];
staticintprime[500000];
#defineMAX_N7368787
voidset(void)
{
inti,j;
for(i=2;i<=MAX_N;i++)
{
if(m[i]==1)continue;
for(j=i+i;j<=MAX_N;j+=i)
m[j]=1;
}
for(i=j=0;i<=MAX_N;i++)
if(m[i]==0)prime[j++]=i;
}
intmain()
{
intm,n,;
while(~scanf("%d%d",&m,&n))
{
for(i=m;i<=n;i++)
{
printf("%d",prime[i-1]);
if(i==n||(i-m)%10==9)putchar(' ');
elseputchar('');
}
}
return0;
}
㈢ c語言 質數
你可以在數組的最後加一項 0 ,但中間就不能有 0 了。然後改成這樣:
#include<math.h>
int main()
{
int n, i,k, a[]={5,20,34,13,25,9,12,23,36,19,0}; //多了個0
n=0; //給 n 賦初值 0
while(a[n]) //當a[n]為true,即 a[n] 不為 0
{
k=sqrt(a[n]); //這里直接用 a[n]
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i>k)
printf("%d ",n);
n++; //n增加1 ,使 a[n] 為下一個數
}
}
㈣ C語言中的質數
數學的概念中,素數就是只能被1和它本身所整除的整數。但是有一個例外,就是1不屬於素數。所以你在輸入一個整數並加以判斷的時候就需要考慮這種情況了。如下即可:
while(scanf("%lu", &num) == 1 && num != 1)
這里用到了while循環來判斷輸入的數值並加以判斷,如果輸入格式正確的話會返回一個1並將輸入的數值存入num這個變數中,然後再判斷num的值是否為1。
在這里有一條很好用的規則用於素數的判斷:測試的數只需要界於2到num的平方根之間的所有數,看它們是否可以整除num。如果可以整除,說明輸入的數不是素數;反之,說明輸入的數是素數。
到這里,就會有人說平方根怎麼求,其實這個很好解決。你完全可以像下面這樣描述判斷條件:
- for(div = 2; (div * div) <= num;div++){ if(num % div == 0){ if((div * div) != num){
- printf("%lu is divisible by %lu and %lu. ", num, div, num / div);
- }else {
- printf("%lu is divisible by %lu. ", num, div);
- }
- }
- }
在這里,在if條件語句裡面還嵌套了一個if條件語句,用來判斷兩個約數是否是一樣的,比如144,約數是12和12,這時候就只需要列印一個約數即可。
㈤ C語言求質數
紅框里的代碼,加上那個i++的for循環,其邏輯是:
從2開始,遍歷所有小於n的整數,
只要存在一個整數可以被n整除(即余數為0),則可判斷n為合數.
若從2到n-1范圍內,不存在可整除n的數,則判斷n為質數.
還有 for(int .......)這種定義變數的寫法,要C99才支持,現在很多編譯器默認C89標准,或者不支持C99標准,這樣寫容易出錯.
第一個for循環裡面,直接把n=0,1,2的情況跳過了.既然這樣,變數n直接把初值賦為3不就好了,賦值0幹嘛.
第二個for循環裡面,判斷到i<sqrt(n)就可以了,還有更簡單的求質數演算法,感興趣可以網路.
㈥ 用C語言輸出100之間的所有質數
1、首先新建一個空白的c語言文件,引入頭文件,頭文件中包括math庫,稍後會用到,建立主函數:
㈦ c語言 質數
把1<N<1000;去掉,scanf("%d",&N);少了&;你的質數判斷方法也有問題