當前位置:首頁 » 編程語言 » c語言裡面的質數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言裡面的質數

發布時間: 2023-03-14 17:32:26

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);少了&;你的質數判斷方法也有問題