C # code Analysis

Source: Internet
Author: User

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?

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);
}
}
}
}
}

Before the teacher just to finish this topic, I ran a code, and so on for a long time, should have half an hour, has not produced results, has been black box, at that time is quite depressed, there is no longer run, the results are as follows. Then began the Baidu program part of the code meaning, in for (Int64 i = 1; i < int64.maxvalue; i++) Int64 is a signed 64-bit integer data type, that is, the result should be a 1 to 2^63-1 (+9,223,372,0 36,854,775,807) between the one I. If this number is always looking down, how big it is, the biggest number has 19!!!

After analyzing the whole program, I understand that this program is known to be able to find Console.WriteLine ("found {0}", i) in the IF ((hit = = 2) && (HIT1+1==HIT2)) Condition: Hit =2,hit2=1,hit1=0, that is, to find an int [] RG array of two contiguous numbers,I cannot divide them evenly . Through two nested loops: for (Int64 i = 1; i < int64.maxvalue; i++), A for (int j = 0; (J < RG. Length) && (hit <=2); J + +) to achieve this process of finding numbers. Before I find these two numbers, I can divide the number I have before, wow, my head is going to break.

But I think such a number should exist, though I have not figured it out.

C # code Analysis

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

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.