軟體工程第三周作業(2)

來源:互聯網
上載者:User

標籤:

using System;

using System.Collections.Generic;

using System.Text;

namespace FindTheNumber

{   

class Program   

{     

static void Main(string[] args)     

{       

int [] rg ={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};       

for (Int64 i = 1; i < Int64.MaxValue; i++)       

{         

int hit = 0;         

int hit1 = -1;         

int hit2 = -1;         

for (int j = 0; (j < rg.Length) && (hit <=2) ; j++)         

{           

if ((i % rg[j]) != 0)           

{             

hit++;             

if (hit == 1)             

{               

hit1 = j;             

}             

else if (hit == 2)             

{               

hit2 = j;             

}             

else               

break;           

}

}         

if ((hit == 2)&& (hit1+1==hit2))         

{           

Console.WriteLine("found {0}", i);         

}       

}     

}   

}

}

1.該段代碼測試的是尋找一個數,該數能且只能“不被”2-31之間連續的兩個數整除

分析:

Int64 :表示的是有符號的64位元,即表示值介於 -2^63 ( -9,223,372,036,854,775,808) 到2^63-1(+9,223,372,036,854,775,807 )之間的整數

j < rg.Length:表示的是j小於數組rg的長度,即j小於30

hit1:表示的是第一個不能被整除的數

hit2:表示的是第二個不能被整除的數

(hit == 2)&& (hit1+1==hit2):在2-31中上述所述的數有且只能有兩個,並且這兩個數是連續的

2.這樣的數不存在:

因為這個數只能被兩個數整除,所以這個數是兩個數之外其他數的最小公倍數,所以先假設能被整除的兩個數,算出其他數的最小公倍數,看能否整除假設的兩個數,如不能,則該數為要找的最小的目標數,如能,則改變假設數繼續運算。

3.運算量較大,無法完成運算

4.盡量減少啟動其他程式,減少cpu的佔用量

 

軟體工程第三周作業(2)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.