本文目錄一覽:
c語言中用篩選法求素數
一個質數。在大於1的自然數中,除1和100整數本身外,不能被任何其他自然數整除的次數。素數在數論中起着重要的作用。
大於1但沒有質數通道的數稱為合數。1和0既不是質數也不是合數。
通過濾波法得到的100以內質數的源代碼如下:
#include"stdio.h"
main()
main()
{
IntI,j。
對於(I = 2;我 99;我+ +)
{
對於(j = 2;我;J + +)
{
If(I%j==0)
{
打破;
}
如果(j==I-1)
{
Printf(“%4d”,I);
}
擴展資料:
100以內的數字代碼如下
包含 bits/stdc++。H
使用命名空間性病。
Intthesum(Intn)
{
返回(n/10+n%10%)+(10)(n/10%*(n%10));
}
Intmain(){
Intn=100;
For (int I = 10;I = n;我+ +)
{
If (sum (I) = = I) cout I endl;
}
返回0;
}
C語言篩選法判斷質數
樓上的別在那誤導人,你那叫篩選法嗎?
先解釋一下篩選法的步驟:
1
先將1挖掉(因為1不是素數)。
2
用2去除它後面的各個數,把能被2整除的數挖掉,即把2的倍數挖掉。
3
用3去除它後面的各數,把3的倍數挖掉。
4
分別用4、5…各數作為除數去除這些數以後的各數。
上述操作需要一個很大的容器去裝載所有數的集合,只要滿足上述條件,即2的N次方的全部置0,3的N次方的全部置0,4的N次方的全部置0.。。。一直到這個數據集合的末尾,這樣一來不為0的數就是素數了,然後按下標在裡面進行查找就好了
篩選法程序如下
#includestdio.h
int
main()
{
int
x[100001];
int
temp,n,
i;
//初始化數組
for(i=0;i100001;i++)
x[i]=0;
//初始化數組完成
/*
預計結果,
數組中質數為0,其它為1
*/
x[0]=x[1]=1;//因為
0和1不能通過計算得到,所以只能手工置1
,1即不是合數也不是質數
for(i=2;i100001;i++)
{//循環數組中的每個數
if(x[i]==0){//如果該數所存的值為0,即第一次接觸此數
temp=2*i;//將它的二倍,及n倍(要小於100000)
,都置為1,因為這些數都能被i整除
while(temp=100000)
{
x[temp]=1;
temp+=i;
}
}
}
scanf(“%d”,n);
while(n
!=
0)
{
if(x[n]==0)
printf(“素數\n”);
else
printf(“合數\n”);
scanf(“%d”,n);
}
return
0;
}
如果你覺得這個方法不好理解,你可以用上面他們寫的那些常規算法,但是數字過大的話,算起來是很慢的
c語言,用篩選法求100之內的質數。
這個很簡單啊,你的算法是要把篩選法,也就是要把從1——100中,能夠整除其他數字的去掉。第一次循環把數組n當中凡是2的倍數全部設為0,第二次循環把數組n中凡是3的倍數的全部變為0,…………。當i=4的時候,n[4]=原本的數字是4,但是第一次循環把2倍數的數組都改為0,所以這個時候n[4]=0,然後num也等於0,num會一直為0,如果沒有你注釋的那句,那循環永遠都不滿足num=101,陷入死循環,當然什麼都不會輸出了。
用c語言篩選100以內的質數
以下為普通的篩質數法的程序: #include #include const int N=101; int a[N],b[N]; int main(void) { int i,j; a[0]=a[1]=1; for(i=2;i=2;j–)a[j*i]=1; } for(i=1;i
c語言編程 素數篩選
用篩法求100以內的素數:
#includestdio.h
int main()
{
int a[101],i,j;
for(i=2;i=100;i++)
a[i]=1;
for(i=2;i=10;i++)
for(j=i+i;j=100;j+=i)
a[j]=0;
printf(“100以內的素數:\n”);
for(i=2;i=100;i++)
if(a[i])printf(“%d “,i);
printf(“\n”);
getch();
return 0;
}
原創文章,作者:HSLU,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/140506.html