1 #include<stdio.h>
2 #include<iostream>
3 #include<cmath>
4 #include<iomanip>
5 #include<set>
6 using namespace std;
7 void sieve(set<int>& s,int n)
8 {
9 int m,i;
10 s.erase(s.begin (),s.end ());//一定要清空
11 for(i=2;i<n;i++)
12 s.insert (i);
13 int t=sqrt(n);
14 for(m=2;m<=t;m++)
15 {
16 if(s.find (m)!=s.end())
17 {
18 i=2*m;
19 while(i<=n)
20 {
21 s.erase (i);
22 i+=m;
23 }
24 }
25 }
26 }
27 int main()
28 {
29 set<int> primeSet;
30 int n;
31 int ccount=0;
32 while(1)
33 {
34 cin>>n;
35 ccount=0;
36 sieve(primeSet,n);
37 set<int>::iterator iter;
38 iter=primeSet.begin ();
39 while(iter!=primeSet.end ())
40 {
41 ccount++;
42
43 cout<<*iter<<" ";
44 iter++;
45 if(ccount%10==0)
46 cout<<endl;
47 }
48 cout<<endl<<ccount <<endl;
49 }
50 return 0;
51 }
素數篩法是這樣的:
1.開一個大的bool型數組prime[],大小就是n+1就可以了.先把所有的下標為奇數的標為true,下標為偶數的標為false.
2.然后:
for( i=3; i<=sqrt(n); i+=2 )
{ if(prime[i])
for( j=i+i; j<=n; j+=i ) prime[j]=false;
}
3.最后輸出bool數組中的值為true的單元的下標,就是所求的n以內的素數了。
原理很簡單,就是當i是質(素)數的時候,i的所有的倍數必然是合數。如果i已經被判斷不是質數了,那么再找到i后面的質數來把這個質
數的倍數篩掉。
一個簡單的 篩素數的過程:n=30。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
第 1 步過后2 4 ... 28 30這15個單元被標成false,其余為true。
第 2 步開始:
i=3; 由于prime[3]=true, 把prime[6], [9], [12], [15], [18], [21], [24], [27], [30]標為false.
i=4; 由于prime[4]=false,不在繼續篩法步驟。
i=5; 由于prime[5]=true, 把prime[10],[15],[20],[25],[30]標為false.
i=6>sqrt(30)算法結束。
第 3 步把prime[]值為true的下標輸出來:
for(i=2; i<=30; i++)
if(prime[i]) printf("%d ",i);
結果是 2 3 5 7 11 13 17 19 23 29
frustum culling,多重紋理,....
http://www.test-your-english-now.net/
今天在這個網站上面做了一下詞匯量測試
果然是不行啊,只有56/80的成績
等我把GT考完了再過來測一次,看看我能有多少
拍照片
|
|
去旅行
|
|
小敗給我做飯吃
|
|
陪小敗去燙頭發
|
|
教小敗JAVA
|
|
買小甘薯
|
|
研究一下網站的東西
|
|
做gym
|
|
跟小敗回北京看爸媽
|
|
去跟小敗做陶藝
|
|
跟小敗去印帶有我們照片的T-Shirt
|
|
本來想直接用GCD解決的,后來找了一下,發現了更好的辦法
歐拉函數 :
歐拉函數是數論中很重要的一個函數,歐拉函數是指:對于一個正整數 n ,小于 n 且和 n 互質的正整數(包括 1)的個數,記作 φ(n) 。
完全余數集合:
定義小于 n 且和 n 互質的數構成的集合為 Zn ,稱呼這個集合為 n 的完全余數集合。 顯然 |Zn| =φ(n) 。
有關性質:
對于素數 p ,φ(p) = p -1 。
對于兩個不同素數 p, q ,它們的乘積 n = p * q 滿足 φ(n) = (p -1) * (q -1) 。
這是因為 Zn = {1, 2, 3, ... , n - 1} - {p, 2p, ... , (q - 1) * p} - {q, 2q, ... , (p - 1) * q} , 則 φ(n) = (n - 1) - (q - 1) - (p - 1) = (p -1) * (q -1) =φ(p) * φ(q) 。
歐拉定理 :
對于互質的正整數 a 和 n ,有 aφ(n) ≡ 1 mod n 。
證明:
( 1 ) 令 Zn = {x1, x2, ..., xφ(n)} , S = {a * x1 mod n, a * x2 mod n, ... , a * xφ(n) mod n} ,
則 Zn = S 。
① 因為 a 與 n 互質, xi (1 ≤ i ≤ φ(n)) 與 n 互質, 所以 a * xi 與 n 互質,所以 a * xi mod n ∈ Zn 。
② 若 i ≠ j , 那么 xi ≠ xj,且由 a, n互質可得 a * xi mod n ≠ a * xj mod n (消去律)。
( 2 ) aφ(n) * x1 * x2 *... * xφ(n) mod n
≡ (a * x1) * (a * x2) * ... * (a * xφ(n)) mod n
≡ (a * x1 mod n) * (a * x2 mod n) * ... * (a * xφ(n) mod n) mod n
≡ x1 * x2 * ... * xφ(n) mod n
對比等式的左右兩端,因為 xi (1 ≤ i ≤ φ(n)) 與 n 互質,所以 aφ(n) ≡ 1 mod n (消去律)。
注:
消去律:如果 gcd(c,p) = 1 ,則 ac ≡ bc mod p ⇒ a ≡ b mod p 。
代碼如下:
import java.util.*;
import java.io.*;

public class Solution
  {
public static void main (String[] argv) throws IOException
 {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(in.readLine());
int n = Integer.parseInt(st.nextToken());
double j = n;
for (int i = 2; i <= n;i++)
if (n%i==0)
 {
j = j * (1 - 1/(double)i);
while (n%i==0)
n = n / i;
}
System.out.println((int)j);
}
}


Oracle Spatial 簡介:
首先,Oracle 支持自定義的數據類型,你可以用數組,結構體或者帶有構造函數,功能函數的類來定義自己的對象類型。這樣的對象類型可以用于屬性列的數據類型,也可以用來創建對象表。而Oracle Spatial也正是基于此種特性所開發的一套空間數據處理系統。
Spatial 的自定義數據類型有很多,都在MDSYS方案下,經常使用的是SDO_GEOMETRY類型。SDO_GEOMETRY表示一個幾何對象,可以是點、線、面、多點、多線、多面或混合對象。
Spatial 在此數據類型的基礎上,實現了R樹空間索引和四叉樹空間索引,還以sql函數的形式實現了多種空間分析功能。
Oracle Spatial 使用:
1、將SDO_GEOMETRY數據類型作為數據表的一個列。
CREATE TABLE cola_markets (
mkt_id NUMBER PRIMARY KEY,
name VARCHAR2(32),
shape MDSYS.SDO_GEOMETRY);
2、填寫空間元數據。
INSERT INTO USER_SDO_GEOM_METADATA
VALUES (
'cola_markets',
'shape',
MDSYS.SDO_DIM_ARRAY( -- 20X20 grid
MDSYS.SDO_DIM_ELEMENT('X', 0, 20, 0.005),
MDSYS.SDO_DIM_ELEMENT('Y', 0, 20, 0.005)
),
NULL -- SRID
);
3、創建空間索引。
CREATE INDEX cola_spatial_idx
ON cola_markets(shape)
INDEXTYPE IS MDSYS.SPATIAL_INDEX;
至此,空間數據表的創建才算正式完成 。
4、插入空間數據。空間數據的插入要
INSERT INTO cola_markets VALUES(
2,
'cola_b',
MDSYS.SDO_GEOMETRY(
2003, -- 2-dimensional polygon
NULL,
NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), -- one polygon (exterior polygon ring)
MDSYS.SDO_ORDINATE_ARRAY(5,1, 8,1, 8,6, 5,7, 5,1)
)
);
5、空間分析查詢示例。
-- Return the topological difference of two geometries.
SELECT SDO_GEOM.SDO_DIFFERENCE(c_a.shape, m.diminfo, c_c.shape, m.diminfo)
FROM cola_markets c_a, cola_markets c_c, user_sdo_geom_metadata m
WHERE m.table_name = 'COLA_MARKETS' AND m.column_name = 'SHAPE'
AND c_a.name = 'cola_a' AND c_c.name = 'cola_c';
我們可能應該回答的第一個問題也是最基本的問題。什么是面向 服務的體系結構(Service-Oriented Architecture, SOA)?這個問題的答案實際上涉及與開發相關的若干不同方面。
SOA 是一種 IT 體系結構樣式,支持將您的業務作為鏈接服務或可重復業務任務進行集成,可在需要時通過網絡訪問這些服務和任務。這個網絡可能完全包含在您的公司總部內,也可能分散于各地且采用不同的技術,通過對來自紐約、倫敦和香港的服務進行組合,可讓最終用戶感覺似乎這些服務就安裝在本地桌面上一樣。需要時,這些服務可以將自己組裝為按需應用程序——即相互連接的服務提供者和使用者集合,彼此結合以完成特定業務任務,使您的業務能夠適應不斷變化的情況和需求(在有些情況下,甚至不需要人工干預)。
這些服務是自包含的,具有定義良好的接口,允許這些服務的用戶——稱為客戶機或使用者——了解如何與其進行交互。從技術角度而言,SOA 帶來了“松散耦合”的應用程序組件,在此類組件中,代碼不一定綁定到某個特定的數據庫(甚至不一定綁定到特定的基礎設施)。正是得益于這個松散耦合特性,才使得能夠將服務組合為各種應用程序。這樣還大幅度提高了代碼重用率,可以在增加功能的同時減少工作量。由于服務和訪問服務的客戶機并未彼此綁定,因此可以完全替換用于處理訂單的服務,下訂單的客戶機-服務將永遠不會知道這個更改。所有交互都是基于“服務契約”進行的;服務契約用于定義服務提供者和客戶機之間的交互。通常,您將通過創建“基于消息的”系統來實現此目標。
從業務的角度來說,面向服務的體系結構的重點在于開發能幫助您完成業務任務的技術,而不是通過技術約束來規定您的行動。例如,銷售過程(制造、運輸和收到貨款)可能會涉及數十個步驟和若干不同的數據庫和計算機系統。但就其實質而言,此過程包含一系列人工活動,例如:
﹡銷售人員找到潛在客戶
﹡客戶訂購產品
﹡生產部門制造產品
﹡生產部門發出產品
﹡收款部門開具產品帳單
﹡客戶支付產品貨款
面向服務的體系結構基于這些實際活動或業務服務進行組織,而不是形成公司所維護的不同的信息豎井 (Silo)。通過實現 SOA,可以帶來大量好處,包括以下各個方面:
﹡更高的業務和 IT 一致性
﹡基于組件的系統
﹡松散耦合的組件和系統
﹡基于網絡的基礎設施,允許分散于各地且采用不同技術的資源協同工作
﹡動態構建的按需應用程序
﹡更高的代碼重用率
﹡更好地標準化整個企業內的流程
﹡更易于集中企業控制
|
|
隨筆:99
文章:-1
評論:17
引用:0
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
---|
29 | 30 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|
留言簿(1)
隨筆分類
隨筆檔案
相冊
搜索
最新評論

|
|