To read the following procedure, please answer the following questions:
Question 1: What are the criteria for this program?
Question 2: Does such a number exist? What is the minimum number that meets this condition?
Question 3: How long do you expect to be able to output the first result when running this program on a computer? The time is accurate to minutes (computer: Single core CPU 4.0G Hz, memory and hard disk resources are sufficient).
Question 4: How can I improve the efficiency of this program on multi-core computers?
(Note: This program, written in C # language, but as long as there is no reading pressure on the basis of C language, if you do not understand some of the statements, please check yourself)
Requirements: Write the results of the above questions on the blog.
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);
}
}
}
}
}
For:
1. From 0 to int64 the maximum is found in 2 to 31 of these 30 numbers and only two adjacent numbers can not be divisible by it, the rest of the numbers are divisible by it.
2. Existence, minimum value: 7*8*11*13*19*23*25*27*29*31=2123581660200
3. If the execution of an additive instruction requires 1 clock cycles, the program execution time is approximately 1 hours.
4. Use multi-threaded way to execute the program in parallel, improve the efficiency of operation.
To read the following procedure, please answer the following questions: