一、前言
老师给出的要求:
阅读下面程序,请回答如下问题:
问题1:这个程序要找的是符合什么条件的数?
问题2:这样的数存在么?符合这一条件的最小的数是什么?
问题3:在电脑上运行这一程序,你估计多长时间才能输出第一个结果?时间精确到分钟(电脑:单核CPU 4.0G Hz,内存和硬盘等资源充足)。
问题4:在多核电脑上如何提高这一程序的运行效率?
(注:该程序、用C#语言编写,但是只要有C语言基础完全没有阅读压力,如果对部分语句不懂请自行查询)
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);
}
}
}
}
}
二、分析
自己第一次看到这个C#代码时候,就觉得C#继承了C及C++语言的特性。首先我看着别扭,我把它写成了c语言。
Int64相当于2^64次方,10^20次方,相当于10亿=10^10次方。
(1)当i=1
j=0 i%rg[0]=1%2=1 1!=0 hit++ hit=1 hit1=j=0;
j=1 i%rg[1]=1%3=1 1!=0 hit++ hit=2 hit1=j=1;
j=2 i%rg[2]=1%4=1 1!=0 hit++ hit=3 break跳出当前循环。判断是否符合条件,不符合
(2)当i=2
j=0 i%rg[0]=2%2=0 0==0
j=1 i%rg[1]=2%3=2 2!=0 hit++ hit=1 hit1=j=1;
j=2 i%rg[2]=2%4=2 2!=0 hit++ hit=2 hit2=j=2;
j=3 i%rg[3]=2%5=2 2!=0 hit++ hit=3 break跳出当前循环。判断是否符合条件,不符合
(3)当i=3
j=0 i%rg[0]=3%2=1 1!=0 hit++ hit=1 hit1=j=0;
j=1 i%rg[1]=3%3=0 0==0 hit++ hit=2 hit2=j=1;
j=2 i%rg[2]=3%4=1 1!=0 hit++ hit=3 break跳出当前循环。判断是否符合条件,不符合
(4)当i=4
j=0 i%rg[0]=4%2=0 0==0
j=1 i%rg[1]=4%3=1 1!=0 hit++ hit=1 hit1=j=1;
j=2 i%rg[2]=4%4=0 0==0
j=3 i%rg[3]=4%5=4 4!=0 hit++ hit=2 hit2=j=3;
j=4 i%rg[3]=4%6=4 4!=0 hit++ hit=3 break跳出当前循环。判断是否符合条件,不符合
。。。。。。。
。。。。。。。。。
从这儿看出来:条件是:最终要是hit==2&&hit1+1==hit2;相邻的两个数同时取余后!=0,就一定满足条件hit1+1==hit2
只有当相邻的两个数是在最后出现,break,前面所有的数都能被整除,那么问题来了,相邻两个数一定是一个奇数和一个偶数。偶数可以拆分为之前的2*相关的数。也就是说,偶数可以用之前的两个数来表示。即不存在这样的数。
三、解答
Int64相当于2^64次方,10^20次方,相当于10亿=10^10次方。
问题1:这个程序要找的是符合什么条件的数?
答:这个程序要找的数,相邻两个数是质数的数。
问题2:这样的数存在么?符合这一条件的最小的数是什么?
答:这样的数不存在。
问题3:在电脑上运行这一程序,你估计多长时间才能输出第一个结果?时间精确到分钟(电脑:单核CPU 4.0G Hz,内存和硬盘等资源充足)。(我的电脑是四核,3,4GHz)
答:测试的数据是1亿,用时5.034秒。
aaarticlea/png;base64,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" alt="" />
测试的数据是10亿,用时51.160秒。(基本上是满足增大10倍,时间上也是增大10倍)
aaarticlea/png;base64,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" alt="" />
所以,我们可以考虑认为:当数据达到10^20时,5.034*10^11秒=839 000 0000分钟。
问题4:在多核电脑上如何提高这一程序的运行效率?
答:多核电脑中,提高每个核的运算效率。实施多线程的控制,把这些数均分到多段,一段一个核,在每一个核中计算每一段的这些数,把每一个核的运算结果输出,多线程控制输入,运算,控制。
附带一张转换成C语言的代码(用Codeblock测得时间)
#include<cstdio>
#include<cstdlib>
#include<iostream>
using namespace std;
int main()
{
long long i,j;
int a[]={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(i=1;i<1000000000;i++)//1亿
{
int hit=0;
int hit1=-1;
int hit2=-1;
for(j=0;j<30&&hit<=2;j++)
{
if(i%a[j]!=0)
{
hit++;
if(hit==1)
hit1=j;
else if(hit==2)
hit2=j;
else
break; }
}
if(hit==2&&(hit1+1==hit2))
cout<<i<<endl;
}
return 0;
}
四、总结
1、分析问题的方式从简单到难。
2、从逻辑上进行推理,变换逻辑思维解决问题。
3、自己需要学习的知识还有很多,自己会每天进步一点。