第三次作业(二)
作業題目如下:
閱讀下面程序,請回答以下問題:
問題1:這個程序要找的是符合什么條件的數?
問題2:這樣的數存在么?符合這一條件的最小的數是什么?
問題3:在電腦上運行這一程序,你估計多長時間才能輸出第一個結果?時間精確到分鐘(電腦:單核CPU 4.0G Hz,內存和硬盤等資源充足)。
問題4:在多核電腦上如何提高這一程序的運行效率?
(注:該程序、用C#語言編寫,但是只要有C語言基礎完全沒有閱讀壓力,如果對部分語句不懂請自行查詢)
將上述問題結果寫到博客上,截止時間本周日(3月19日)晚8時
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.是要找出的數,這個程序要找的是一個符合范圍是從1~2^63-1的數,其次找出一個數不能被數組rg中兩個相鄰的數整除且只能連續的兩個數不能被整除,余下的數能被整除 ,因為范圍很大,很難找住這個數;
2.這個數可能存在,由于運行時間過長,找不出結果;
3.通過運行程序可知,應該所需時間不短,至于計算方法我不知道怎么計算;
4.使用多核電腦時,應盡量少的啟動其它應用程序占用CPU,擴大CPU運行空間,從而使CPU可以提供更多的線程來運行這個程序,加快計算速度。
轉載于:https://www.cnblogs.com/fanxijiang/p/5296052.html
總結
- 上一篇: 选择排序—简单选择排序(Simple S
- 下一篇: Linux文本三剑客之sed仗剑走天涯