1. 程式人生 > >用篩選法求100以內的素數

用篩選法求100以內的素數

思路:

1:先對1到100進行賦值,為了方便起見,我們可以讓a[1]=1;a[2]=2;...;a[100]=100;即a[i]=i。為此我們需要開闢101個空間(因為a[0]不使用),用迴圈對a[1]~a[100]進行賦值。

2:判斷一個數是否是素數,只用判斷它除了1和它本身以外還有沒有其他的其他的因數,如果沒有,那這個數就是素數。

3:我們可以用迴圈進行a[i]%i==0運算,如果條件為真,則不是素數。但為了減少程式碼冗餘,提高執行速度,降低迴圈次數,我們不需要從1一直判定到他本身,只用從1判斷到它的平方根即可。

4:如果條件為真,我們就把a[i]=0,最後進行迴圈輸出,如果a[i]=0,則不輸出。

程式碼如下:

#include<stdio.h>
void main()
{
	int i,j;
	int num = 0;
	int a[101];
	for(i = 1;i <= 100;++i)
	{
		a[i]=i;
	}
	for(i = 2;i <= 10;++i)
	{
		for(j = i+1;j <= 100;++j)
		{
			if(a[j]%i==0)
				a[j]=0;
		}
	}
	printf("100以內素數有:");
	for(i = 2;i <= 100;++i)
	{
		if(a[i]!=0)
		{
			printf("%d ",a[i]);
			num++;
		}
	}
	printf("\n");
	printf("100以內素數的個數為:%d\n",num);
}

相關推薦

篩選100以內素數問題

#include<stdio.h> #include<math.h> int main() { int i,j,n,a[101]; for(i=1;i<=100;i++)/*a[0]不用,只用a[1]到a[100]*/

篩選100以內素數

思路:1:先對1到100進行賦值,為了方便起見,我們可以讓a[1]=1;a[2]=2;...;a[100]=100;即a[i]=i。為此我們需要開闢101個空間(因為a[0]不使用),用迴圈對a[1]~a[100]進行賦值。2:判斷一個數是否是素數,只用判斷它除了1和它本身以

【C語言】 利用篩選100以內素數

演算法思路: 原理很簡單,就是當i是質(素)數的時候,i的所有的倍數必然是合數。如果i已經被判斷不是質數了,那麼再找到i後面的質數來把這個質數的倍數篩掉。 程式碼如下: //C語言 篩選法求100以內的素數 //原理很簡單,就是當i是質(素)數的時候,i的所有的倍數必然是合數。如果i已經

python遞迴篩選N以內的孿生質數(孿生素數)--附氣泡排序和插入排序練習

本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,排名前幾的都是用for迴圈來做的,感覺略微麻煩了一些,在比較一些還是覺得用遞迴篩選法來解決這個問題。 新建List,然後從第0位開始,如果後面的能被這個數整除,則從陣

java遞迴篩選N以內的孿生質數(孿生素數)--附氣泡排序和插入排序練習

本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,排名前幾的都是用for迴圈來做的,感覺略微麻煩了一些,在比較一些還是覺得用遞迴篩選法來解決這個問題。 新建List<Integer>,然後從第0位開始,如

java遞迴篩選N以內的孿生質數(孿生素數

本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,排名前幾的都是用for迴圈來做的,感覺略微麻煩了一些,在比較一些還是覺得用遞迴篩選法來解決這個問題。 新建List<Integer>

python遞迴篩選N以內的孿生質數(孿生素數

本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,

篩選查詢100以內素數

解析: 篩選法:是指從小到大篩去一個已知素數的所有倍數。例如:根據2,我們篩選去4,6,8,....,98,100等數,然後根據3,我們可以篩選9,15,...99等數(注意此時6、12等數早就被篩去了),由於4被篩去了,下一個用於篩選的素數是5,以此類推,最後剩餘的就是100以內的素數。

groovy使用stream語法遞迴篩選N以內的質數(素數)--附氣泡排序和插入排序練習

本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,

100以內素數的5中基本方法及其優化

其他 依然 都是 耗時 基本 for proc rime 數字 求100以內素數的5中基本方法及其優化方法1 基本做法 錯解比較:進入了小循環:有時加pass也可以。錯解:這裏的print也同樣註意不要寫到循環內。 註釋:1.兩種條件運用:為合數。2.以上錯誤點。方法二

python filter 100以內素數

python filter的用途: 從可迭代元素中過濾不想要的資料 或者說是留下想要的資料 經典題目:求100以內的素數 分析:題目無非就是從100元素中篩選滿足條件的資料,這不正是python 過濾器的應用場景嗎? def find(x): for i

shell指令碼100以內所有正整數之和

#!/bin/bash declare -i sum=0 for ((i=1;i<=100;i++)) do let sum+=$i done echo "Sum:$sum" 1234567

python 100以內素數

def is_prime(n): if n == 1: return False for i in range(2, n//2 + 1): i

【python】100以內素數/質數和

import math def is_prime(n): # 簡化問題,先利用函式判斷是否為質數 if n == 1: # =是賦值,==才是判斷,切記切記 return False for i in range(2, int(math

Python編寫100以內素數

注:本文所使用的方法都是從math 包裡面匯入進來sqrt函式,那麼也可以只匯入math包,但是應用sqrt函式時需要寫成math.sqrt() 方法一:  from math import sqrt x=2 while x<=100: k=sqrt(x)

關於埃氏篩選素數python程式碼的一些理解

原始碼 來自廖雪峰-filter 演算法描述參考原文。 程式碼塊如下: def _odd_iter(): # 生成一個無限序列的奇數Generator z = 1 while True: z = z+2 yield z def

程式基本演算法習題解析 使用篩選出1~100之內的所有素數

思路:              第一個素數是2,把後面是2的整數倍的數全部篩去,篩去的數置0;從第一個素數2向後找出最小的未被篩去的數3,把它後面是3的整數倍的數全部篩去並置0;重複上述過程,直到新找到的素數大於1

【Coding】素數的C++實現(附100000以內素數表)

#include <cstdio> #include <cstring> using namespace std; #define MAXN 1000000+100 bool arr[MAXN]; void findPrime(int

C++100以內素數

#include<iostream> #include<math.h> using namespace std; const int N = 300; bool pri

篩選素數

return include main 技術 ret printf int images ima C語言 #include <stdio.h>#include <math.h>int main(){int i,j,a[100],N;scanf("