1. 程式人生 > >輸出200-299之間的所有素數

輸出200-299之間的所有素數

Description
一個整數如果不能被1和自身以外的所有整數所整除,那麼這個數是素數。編寫程式找出200~299之間的所有素數。

Input
無輸入。

Output
200~299之間的所有素數,每8個數就換行。注意:每一行第一個數字(如211 257)前無空格,每一行最後一個數字(如251 293)後面無空格。

#include <stdio.h>
#include <math.h>
int main()
{
int i,j,k=0;//有的人會多設一個變數如n令n=sqrt(i),實際只出現了一遍,但程式碼量增多,顯得更麻煩
for(i=200;i<300;i++)//開始判斷哪個符合
{
for(j=2;j<=sqrt(i);j++)
if(i%j==(這個括號要去掉,不知道怎麼回事,顯示出問題了,必須加點什麼)0)break; //注意:先跳出迴圈,不然會增加工作量,儘量建簡化演算法
if(i%j>0)//與上面的for語句等級一樣,按順序進行可寫為i%j!=0,進一步簡化。這一步的判斷中,若i為素數,則上面的for迴圈不成立,j加1後i%(j+1)必定》0或者說 !=0,進一步判斷
{
k++;//由於題目 “每8個數就換行。注意:每一行第一個數字(如211 257)前無空格,每一行最後一個數字(如251 293)後面無空格” 的要求,一行裡七個數為數字+空格的形式,第8個即k%8==0的時候,不僅輸出數字,還要換行,同時這裡不能再有空格
if(k%8!=0)printf("%d “,i);
else printf(”%d\n",i);
}
}
return 0;
}

下面是另一種方向一樣的完整程式碼
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,j,k=0;
for(n=200;n<=299;n++)
{
j=sqrt(n);
for(i=2;i<=j;i++)
if(n%i0)break;
if(i>j)
{
k=k+1;
if(k%8!=0)
printf("%d ",n);
if(k%8
0)
printf("%d\n",n);
}
}
return 0;
}