C語言:輸出0-100間素數 & 連續輸出100個素數

0-100間素數

  1. 算法思路:
    1、參考判斷素數程序
    2、加入循環實現0-100間素數輸出

  2. 代碼如下:

//輸出0-100內素數 
#include<stdio.h>
int main()
	
{	
	int a;
	int i;
	int count=0; 
	int isprime=1;  //a是素數 
	for(a=2;a<100;a++){
		for(i=2;i<a;i++){
			if(a%i==0){
			 	isprime=0;
				break;			
			}					
		} 
		if(isprime==1){
			count++;
		   	printf("%d\t ",a);  //水平製表符
			   	if(count%5==0){
			   		printf("\n");	//換行符	   		
				   }
		}
	    			
	   	isprime=1;
	}	
	return 0;
}

輸出結果:
		2        3       5       7       11
		13       17      19      23      29
		31       37      41      43      47
		53       59      61      67      71
		73       79      83      89      97
		
		--------------------------------
		Process exited after 0.3817 seconds with return value 0
		請按任意鍵繼續. . .

代碼分析:
根據上一個程序改編而成,主要加了0-100內數值循環這個選項,這裏一定要注意 if 、while 、for 等循環語句中有{ }和沒有的區別,尤其是在改動語句的時候一定要注意。

連續輸出100個素數

  1. 算法思想:
    1、設置計數器用於檢驗是否達到100個素數;
    2、利用 for 和 while 循環均可以達到效果;

  2. 代碼如下:

// 輸出50個連續素數 
#include<stdio.h>
int main()
	
{	
	int a=2;
	int i;
	int count=0; 
	int isprime=1;  //a是素數 
	for(a=1;count<100;a++)
	//while(count<100)
	{
		for(i=2;i<a;i++){
			if(a%i==0){
			 	isprime=0;
				break;			
			}					
		} 
		if(isprime==1){
			count++;
		   	printf("%d\t ",a);
			   	if(count%5==0){
			   		printf("\n");		   		
				   }
		}	    	
	   	isprime=1;
	   	// a++;
	}	
	return 0;	
}

輸出:
1        2       3       5       7       11      13      17      19      23
29       31      37      41      43      47      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     211     223     227
229      233     239     241     251     257     263     269     271     277
281      283     293     307     311     313     317     331     337     347
349      353     359     367     373     379     383     389     397     401
409      419     421     431     433     439     443     449     457     461
463      467     479     487     491     499     503     509     521     523

--------------------------------
Process exited after 0.2975 seconds with return value 0
請按任意鍵繼續. . .

代碼分析:
這裏說一下程序第26行中 isprime=1;對isprime初始化意義:當不是素數時,經過第15行的 isprime=0 會使isprime的值變爲 0 ,由於 isprime 的聲明語句在整個循環外部,所以即使下一個爲素數,也會因爲 isprime 的值而導致錯誤輸出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章