1樓:湛藍水晶
#include
int prime(int valu);
int main()
int number;
doscanf("%d",&number);
printf("%d",prime(number));
while(number);
return 0;
int prime(int valu) /返回0為非素數,1為素數。
int i,flag;
for (i=2;i<=(valu/2);i++)if (0==valu%i) return 0;
return 1;
to 樓下的。
輸入2的話for迴圈直接不執行,return 1以上程式在dev c++下編譯測試通過。
對於大的數,的確是用平方根去判斷效率高一點,或者用篩法將素數儲存在陣列中,用空間換時間。
2樓:網友
二樓的程式如果輸入2會怎麼樣?好象判定為非負數。
#include
#include ""
bool isprime(int valu);
int main()
int number = 1;
while(number!=0)
scanf("%d",&number);
if(number <=0)
break;
if(isprime(number))
printf(..
elseprintf(..
return 0;
bool isprime(int valu) /返回flase為非素數,true為素數。
if(valu==1 ||valu%2 ==0)
return flase;
if(valu==2 ||valu==3)
return true;
int i, flag=sqrt(valu)+1;
for (i=3;i<=flag;i +=2)
if (valu%i ==0) return flase;
return true;
思路和上面差不多吧,解決了幾個邊界值(0~3,另外把負數也作為退出條件),改變迴圈結構為了不去判斷非法資料。
在bool()中用了一些特殊值的判斷,但是效率提高了一半左右(當valu比較大的時候),我覺得是值得的。
對於特別大的valu,用乙個線性表(陣列就行了吧)儲存小於其開方的質數應該是比較高效的,有興趣不妨試試。
編寫程式,要求50~200間的全部素數
3樓:匿名使用者
寫了一段fortran**,一共有31個素數;
具體演算法見**中的綠凱早色字型注盯擾雀釋。
31個素數具體是:53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,李知131,137,139,149,151,157,163,167,173,179,181,191,193,197,199。
附:計算結果和fortran**。
4樓:做而論道
編寫乎悄程式,要求50~200間的全部素數。
共有 31 個素數。
程式帆頃搭如態拿下:
編寫程式判斷是否為素數?
5樓:刺友互
1、寫我們的標頭檔案和主函式。寫好我們的開頭。
2、編寫定義變數,我們語言定義乙個i來用於後面的for循伍旦環。
3、我們輸入乙個數,在那之前我們要有乙個printf()提示一下。
4、利用for迴圈看一看從2到n-1是否能被n整除,腔粗擾如果能就要break。
5、判斷素數,如果程式正常結束,就i>=n,說明他就是素數。
6、如果通過break結束,他就會i<>
7、輸出最後結果。凳早。
程式設計素數問題
6樓:網友
1全部假設存在乙個大於根號m的數a可以整除m。
那麼m可以寫成m=a*b的形式。
然後判斷b的大小?
由於a>b且a>根號m,所以b《根號m,那麼「在判斷至b時,就已經可以得出m不是素數了」,即「只需判斷是否能被2~(根號m)之間的數整除即可」,論點正確。
7樓:網友
因為比根號m大的數,一定是比根號m小的數的倍數。
素數的c語言程式怎麼做?
8樓:我是小星星欣欣
素數,也叫質數,就是指除了1和該數本身以外,不能被其他任何整數整除的正數山鄭基。
#include#includevoid main(){int m, k, i, n=0; for(m=1; m <=200; m=m+2) {k = sqrt(m); for(i=2; i <=k; i++)if(m % i ==0) break; if(i >=k + 1) {printf("%5d",m); n = n + 1;
素數
所謂素數是指除了1和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被2~16的任一整數整除。因此判斷乙個整數m是否是素數,只需把m被逗謹2~m-1之間的每乙個整數去除,如果都不能被整除,那麼m就是乙個素數。
另外判斷方法還可以簡化。m不必唄2~m-1之間的每乙個整數去除,只需被2~√m之間的每乙個整數去除就可以了。如果m不能被2~√m間任一整數整除,m必定是素數。
例如判別17是是否為素數,只需使17被2~4之間的每乙個整數去除,由於都不能整除,可以判定17是素數。(原因:因為如果m能被2~m-1之間任一整數整叢豎除,其二個因子必定有乙個小於或等於√m,另乙個大於或等於√m。
例如16能被2,4,8整除,16=2*8,2小於4,8大於4,16=4*4,4=√16,因此只需判定在2~4之間有無因子即可)
9樓:來麼
很簡單的,多用幾次for和if的慎兆巢狀就好了,具體如下:
#include ""
void main()
int a,b;
int i,n;
int flag=1;
printf("請輸入上限:")
scanf("%d",&a);
printf("請輸入下限:")
清罩scanf("%d",&b);
printf("%d到%d之間的素數為:",a,b);
for (i=a;i<=b;i++)
flag=1;
for (n=2;n
用VB編寫程式,用VB編寫一個程式
樓上的,不許要引用吧 option explicit private declare function getdrivetype lib kernel32 alias getdrivetypea byval ndrive as string as long private declare funct...
編寫c程式求1 2 3 ,編寫一個c程式 求1 2 3
include int main printf 1 權 2 20 ld sum return 0 main printf ld s 上面復的程式都已經制溢位了,int哪能儲存那麼大的數呀,應該用陣列來分割儲存!include int main m 2,t 3 for m 1 m 20 m c 1 t...
C 編寫小程式(思路即可),C 編寫一個小程式(思路即可)
求出該整數的各個位 比如 125,百位為1,十位為2,個位為5 依次放入int型陣列,x 另外定義一個9個大小的int陣列a,初始化為0然後迴圈,每個迴圈裡switch x i case 1 a 0 省略 第一步 先判斷輸入的整數是多少位的,比如輸入的是 123 就是三位的 第二步 將這個數除以10...