回覆列表
-
1 # 我是你的小公聚
-
2 # 錢布斯
#include<stdio.h>
#include<math.h>
int prime(int n)
{int i;
for(i=2;i<=sqrt(n+1);i++)
if(n%i==0)return 0;
return n>1;
}
int main()
{int i;
for(i=2;i<=200;i++)
if(prime(i))printf("%4d",i);
return 0;
}
-
3 # 使用者2933114718923581
有三種方法:
1、輸出1-100以內的素數:
2、同樣,也是輸出1-100以內的素數,這個構造一個數組,將其所有元素初始化為1,表示素數,這時取x從2開始,到100以內做迴圈。
若x為素數,即prime[x]!=0,使得每個i*x位置元素置0(prime[i*x]=0),表示為非素數,迴圈結束前x+1。
3、該方法是輸出100個素數,基本思想是構造一個素數表,利用函式判斷每個數是否能被其之前的素數整除,如果不能,則在素數表內加上該元素,不斷迴圈(while迴圈結束條件是cnt即陣列個數>100)。
擴充套件資料:
在這個小程式中主要用到的是for迴圈
for 迴圈語句的一般形式為:
for (表示式1; 表示式2; 表示式3)
{
語句;
}
需要注意的兩點:
1) 表示式1、表示式2和表示式3之間是用分號;隔開的,千萬不要寫成逗號。
2) for(表示式1;表示式2;表示式3)的後面千萬不要加分號,很多新手都會犯這種錯誤——會情不自禁地在後面加分號。
因為 for 迴圈只能控制到其後的一條語句,而在C語言中分號也是一個語句——空語句。所以如果在後面加個分號,那麼 for 迴圈就只能控制到這個分號,下面大括號裡面的語句就不屬於 for 迴圈了。
main(){ int t,i,j,k=0; for(int t= 500; t < 1000; t++) { for(i = 2; i < t/2; i++) { if(t % i == 0) break; } if(i == t/2 + 1) { if(k%6 == 0) printf("\n"); else printf("%d ",t); k++; } } }