當前位置:首頁 » 編程語言 » c語言列印區間素數只對一半
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言列印區間素數只對一半

發布時間: 2022-11-16 17:50:35

1. c語言輸出100到200之間的素數

解題思路:

首先先找出來100~200以內的所有整數,再讓這些整數對除了1和它本身以外的數求余,如果有能整除的就不是素數,否則就為素數。

先找出來100到200的所有整數,都為i

用i去對除了1和它本身以外的數求余。

正確的代碼:

#include<stdio.h>

int main()

{

int conut = 0;

int i = 0;

for(i=100; i<=200; i++)

{

int j = 0;

for(j=2; j<i; j++)

{

if(i%j == 0)

break;

}

if(j==i)

{

conut++;

printf("%d ", i);

}

}

printf(" ");

printf("素數個數為:%d ", conut);

return 0;

}

第二個if語句的判斷條件應該是j==i;而不是i%j 。

(1)c語言列印區間素數只對一半擴展閱讀:

實現的其他方法:

需要用到sort函數,也就是開平方根函數。頭文件為#include<math.h>。 顯而易見,任何一個數,每一對因子都是由這個數開平方後的數的左右各一個組成,所以,在求余過程中,只需要對從2到開平方之後的數求余即可。遇到可以整除的就不是素數,否則就為素數。

代碼:

#include<stdio.h>

#include<math.h>

int main()

{

int count = 0;

int i = 0;

for(i=100; i<=200; i++)

{

int j = 0;

for(j=2; j<=sqrt(i); j++)

{

if(i%j == 0)

break;

}

if(j > sqrt(i))

{

count++;

printf("%d ",i);

}

}

printf(" ");

printf("素數個數為:%d", count);

return 0;

}

2. 用C語言編寫一個判斷素數的函數,主函數中利用這個函數,列印出100與200之間的所有素數.

#include <stdio.h>
#include <math.h>

int isPrime(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
return 0;
return 1;
}

void printPrime(int a,int b)
{
int i;
for(i=a;i<=b;i++)
if(isPrime(i))
printf("%d ",i);
printf("\n");
}

int main()
{
int a,b;
printf("請輸入你要列印的素數區間:\n");
scanf("%d %d",&a,&b);
printPrime(a,b);
return 0;
}

3. C語言判斷並輸出輸入區間上的素數

邏輯太亂!

  1. 把find=1;提前到for(i=2...前面。

  2. if(find==1&&i<n)

    printf("%ld ",n);

    後面的break;刪除。

  3. 把上面這句

    if(find==1&&i<n)

    printf("%ld ",n);

    移到後面的}後面。

  4. 把上面這句if(find==1&&i<n)中的&&i<n刪除,那永遠是成立的。不刪也不錯。

4. 用C語言輸出100到200之間的素數

應該是對素數的定義沒有理解吧。

素數,是定義為在大於1的自然數中,除了1和它本身以外不再有其他因數。

簡而言之,素數就是只能被1和它自己相乘得到的數。所以,除了1和它自己之外,它對其它數取余數,結果都不是0。

同時,無論什麼數,除了它自己之外,最大的因數肯定是它的一半,所以只需要查找到它的一半就可以了,不必從1查找到它自己。而且,這里是找素數,如果它的因數包括它自己的一半與數字2的話,那它也不會是素數了,所以查找的界限定為比如 i/2 是不會有遺漏的。

至於你的原來的代碼里為什麼是它自己開平方,我數學記得不多了,不是太清楚。

然後,就是根據定義去判斷一個數是不是素數,那麼,就必須讓它與從2到它的一半的所有的數的余數都不為0,反應到代碼里就是不僅僅要 「i % n != 0」,而且還要全部能除的數都除一遍,也就是「 n == k」,這個時候,才能確定這個數是素數了。

#include<stdio.h>
#include<math.h>

intmain()
{
inti,k,n,m=0;
for(i=101;i<=200;i=i+2)
{
k=i/2;//被除的數,小於等於它的一半
for(n=2;n<=k;n++)
{
if(i%n==0)
break;
elseif(n==k)//要把從2到k的數都除一遍才能確定
{
printf("%8d",i);
m++;
if(0==m%10)//把這個if輸出換行放到elseif裡面來,要不然後面會多很多空行
printf(" ");
}
}
}
printf(" ");
return0;
}

輸出截圖:

5. c語言 求[500,800]區間內的素數

#include<stdio.h>
#include<conio.h>
#include<math.h>

intcountvalue(intaa[]){
inti,flag,j,cnt=0;
for(i=500;i<=800;i++){//;
flag=1;
for(j=2;flag&&j<=sqrt(i);j++)
if(i%j==0)flag=0;
if(flag)aa[cnt++]=i;
}
returncnt;
}

intmain(){
inti,cnt,c[500];
cnt=countvalue(c);
printf("素數總數=%d ",cnt);
for(i=0;i<cnt;++i){
if(i&&i%10==0)printf(" ");
printf("%5d",c[i]);
}
if(i%10)printf(" ");
getch();
return0;
}

6. C語言輸出100到一千之間所有素數

首先打開CodeBlocks,創建一個新項目。項目語言,選擇「c」,就可以寫程序判斷素數了,具體方法為:

1、創建好項目後,我們打開 「main.c」文件。

注意事項:

質數被利用在密碼學上,所謂的公鑰就是將想要傳遞的信息在編碼時加入質數,編碼之後傳送給收信人,任何人收到此信息後,若沒有此收信人所擁有的密鑰,則解密的過程中(實為尋找素數的過程),將會因為找質數的過程(分解質因數)過久,使即使取得信息也會無意義。

7. c語言編程輸出區間 [m,n]內的素數,區間范圍由用戶輸入,並統計所輸出的素數總數.

#include<stdio.h>

#include <stdlib.h>

#include <math.h>

int isprime(int a)

{int i;

if(a<2)return 0;

for(i=2;i<=sqrt(a);i++)

if(a%i==0)return 0;

printf("%d ",a);

return 1;

}

int main()

{

int a,b=0,m,n;

printf("輸入區間 [m,n]范圍 ");

scanf("%d,%d",&m,&n);

for(a=m;a<=n;a++)

{

if(a==2)

{ printf("%d ",a);

b++;

}

else

{ b+=isprime(a) ;

}

}

printf(" 素數總數%d ",b);

return 0;

}

8. c語言列印素數

你懸賞都沒有,很難做啊.
以後多向我提問吧.希望有懸賞.
#include
"stdio.h"
#include
<math.h>
#define
N
2033
int
Prime()
{
int
a[N];
int
i,
j;
//將到N-1間的數放在篩子中
i
=
2;
while(i<N)
{
a[i]=1;
i++;
}
i
=
2;
int
limit;
limit
=
(int)sqrt((double)(N-1));//計算除數的上限limit
while(i<limit)
{
//用i篩去篩子中i的倍數的數,不包括i本身
j
=
2*i;
while(j<N)
{
a[j]
=
0;
j
+=
i;
}
//找到篩子下一個數j
j
=
i+1;
while(a[j]==0&&j<=limit)
j++;
i
=
j;
}
//將篩子中的數列印出來
i
=
2;
int
times=0;
while(i<N)
{
if(a[i])
{
printf("%5d",
i);
times++;
if((times)%10==0)
printf("\n");
}
i++;
}
printf("\n");
return
0;
}
這個方法很不錯

9. C語言 輸出200以內的素數,,怎麼做,跪求,下面是我自己寫的。。

#include<stdio.h>
void main()
{
int num,i;
for(num=0;num<=200;num++)
{
if(num==0||num==1)
continue;
else
{
for(i=2;i<num;i++)
{
if(num%i==0)
break;
}/*這里*/
if(i==num)/*這里*/
printf("%5d\n",num);
}
}
}

10. 用C語言寫一個調用函數,求出一個范圍內的素數,范圍自己輸入

#include<stdio.h>
#include<math.h>
intprime(inta,intb)//求出整數a-b范圍內的所有素數
{
inti=2,j,n;
for(j=a;j<=b;j++)
{
n=sqrt(j)+1;//j的平方數+1
i=2;
while(i<n)
{
if(j%i==0) //整除,退出循環
break;
i++;
}
if(i==n)//非整除退出循環,i肯定等於n
printf("%d",j); //j是素數,輸出
}
}
intmain()
{
inta,b;
scanf("%d%d",&a,&b);//輸入整數范圍a-b
prime(a,b);
return0;
}