using System;
using System.IO;
using System.Runtime.InteropServices;
namespace EnumPrime
{
    class EnumPrime
    {
        [DllImport("kernel32.dll")]
        extern static short QueryPerformanceCounter(ref long x);
        [DllImport("kernel32.dll")]
        extern static short QueryPerformanceFrequency(ref long x);        static void Main()
        {
            uint num = 0U, top = 0U, n = 0U;
            long begintime = 0L, endtime = 0L, freqtime = 0L, resulttime = 0L;
            string filename;
            do
            {
                Console.Write("请输入上限:    ");
                try
                {
                    top = Convert.ToUInt32(Console.ReadLine());
                }
                catch
                {
                    Console.WriteLine("请正确输入数字!");
                    continue;
                }
                if (top < 2)
                    Console.WriteLine("请输入>=2的值");
            } while (top < 2);
            Console.Write("请输入保存位置:");
            filename = Console.ReadLine();
            StreamWriter oufile = null;
            try
            {
                oufile = new StreamWriter(filename);
            }
            catch
            {
                oufile = null;
            }
            QueryPerformanceCounter(ref begintime);
            PrimeTable[0] = 3;
            for (num = 2; num <= top; ++num)
            {
                if (TestPrime(num))
                {
                    if (oufile != null)
                        oufile.Write("{0},", num);
                    n++;
                }
            }
            QueryPerformanceCounter(ref endtime);
            QueryPerformanceFrequency(ref freqtime);
            Console.WriteLine("在<={0}时共有{1}个素数", top, n);
            if (oufile != null)
            {
                oufile.WriteLine();
                oufile.WriteLine("在<={0}时共有{1}个素数", top, n);
                oufile.Close();
                Console.WriteLine("结果保存在:    {0}", filename);
            }
            resulttime = (endtime - begintime) * 1000 / freqtime;
            Console.WriteLine("处理时间:      {0}时{1}分{2}.{3:000}秒", resulttime / 3600000, (resulttime / 60000) % 60, (resulttime / 1000) % 60, resulttime % 1000);
            Console.ReadLine();
        }
        static uint[] PrimeTable = new uint[6543];
        static ushort TableIndex = 0;
        static bool TestPrime(uint n)
        {
            uint i = 0;
            if (n == 1)
                return false;
            else if (n == 2)
                return true;
            if (n % 2 == 0)
                return false;
            for (i = 0; PrimeTable[i] * PrimeTable[i] <= n; i++)
            {
                if (n % PrimeTable[i] == 0)
                    return false;
            }
            if (n <= 65521)
                PrimeTable[TableIndex++] = n;
            return true;
        }
    }
}

解决方案 »

  1.   

    自己去找Reflector来转吧,这年头,得自己动手http://www.red-gate.com/products/reflector/
      

  2.   

    Imports System 
    Imports System.IO 
    Imports System.Runtime.InteropServices 
    Namespace EnumPrime 
        Class EnumPrime 
            <DllImport("kernel32.dll")> _ 
            Private Shared Function QueryPerformanceCounter(ByRef x As Long) As Short 
            End Function 
            <DllImport("kernel32.dll")> _ 
            Private Shared Function QueryPerformanceFrequency(ByRef x As Long) As Short 
            End Function 
            
            Private Shared Sub Main() 
                Dim num As UInteger = 0, top As UInteger = 0, n As UInteger = 0 
                Dim begintime As Long = 0L, endtime As Long = 0L, freqtime As Long = 0L, resulttime As Long = 0L 
                Dim filename As String 
                Do 
                    Console.Write("请输入上限: ") 
                    Try 
                        top = Convert.ToUInt32(Console.ReadLine()) 
                    Catch 
                        Console.WriteLine("请正确输入数字!") 
                        Continue Try 
                    End Try 
                    If top < 2 Then 
                        Console.WriteLine("请输入>=2的值") 
                    End If 
                Loop While top < 2 
                Console.Write("请输入保存位置:") 
                filename = Console.ReadLine() 
                Dim oufile As StreamWriter = Nothing 
                Try 
                    oufile = New StreamWriter(filename) 
                Catch 
                    oufile = Nothing 
                End Try 
                QueryPerformanceCounter(begintime) 
                PrimeTable(0) = 3 
                For num = 2 To top 
                    If TestPrime(num) Then 
                        If oufile IsNot Nothing Then 
                            oufile.Write("{0},", num) 
                        End If 
                        n += 1 
                    End If 
                Next 
                QueryPerformanceCounter(endtime) 
                QueryPerformanceFrequency(freqtime) 
                Console.WriteLine("在<={0}时共有{1}个素数", top, n) 
                If oufile IsNot Nothing Then 
                    oufile.WriteLine() 
                    oufile.WriteLine("在<={0}时共有{1}个素数", top, n) 
                    oufile.Close() 
                    Console.WriteLine("结果保存在: {0}", filename) 
                End If 
                resulttime = (endtime - begintime) * 1000 / freqtime 
                Console.WriteLine("处理时间: {0}时{1}分{2}.{3:000}秒", resulttime / 3600000, (resulttime / 60000) Mod 60, (resulttime / 1000) Mod 60, resulttime Mod 1000) 
                Console.ReadLine() 
            End Sub 
            Shared PrimeTable As UInteger() = New UInteger(6542) {} 
            Shared TableIndex As UShort = 0 
            Private Shared Function TestPrime(ByVal n As UInteger) As Boolean 
                Dim i As UInteger = 0 
                If n = 1 Then 
                    Return False 
                ElseIf n = 2 Then 
                    Return True 
                End If 
                If n Mod 2 = 0 Then 
                    Return False 
                End If 
                i = 0 
                While PrimeTable(i) * PrimeTable(i) <= n 
                    If n Mod PrimeTable(i) = 0 Then 
                        Return False 
                    End If 
                    i += 1 
                End While 
                If n <= 65521 Then 
                    PrimeTable(System.Math.Max(System.Threading.Interlocked.Increment(TableIndex),TableIndex - 1)) = n 
                End If 
                Return True 
            End Function 
        End Class 
    End Namespace 
      

  3.   

    http://www.developerfusion.com/tools/convert/csharp-to-vb/   1. Imports System
       2. Imports System.IO
       3. Imports System.Runtime.InteropServices
       4.
       5.
       6. Namespace EnumPrime
       7.     Class EnumPrime
       8.         <DllImport("kernel32.dll")> _
       9.         Private Shared Function QueryPerformanceCounter(ByRef x As Long) As Short
      10.         End Function
      11.         <DllImport("kernel32.dll")> _
      12.         Private Shared Function QueryPerformanceFrequency(ByRef x As Long) As Short
      13.         End Function
      14.        
      15.         Private Shared Sub Main()
      16.             Dim num As UInteger = 0, top As UInteger = 0, n As UInteger = 0
      17.             Dim begintime As Long = 0L, endtime As Long = 0L, freqtime As Long = 0L, resulttime As Long = 0L
      18.             Dim filename As String
      19.             Do
      20.                 Console.Write("请输入上限: ")
      21.                 Try
      22.                     top = Convert.ToUInt32(Console.ReadLine())
      23.                 Catch
      24.                     Console.WriteLine("请正确输入数字!")
      25.                     Continue Try
      26.                 End Try
      27.                 If top < 2 Then
      28.                     Console.WriteLine("请输入>=2的值")
      29.                 End If
      30.             Loop While top < 2
      31.             Console.Write("请输入保存位置:")
      32.             filename = Console.ReadLine()
      33.             Dim oufile As StreamWriter = Nothing
      34.             Try
      35.                 oufile = New StreamWriter(filename)
      36.             Catch
      37.                 oufile = Nothing
      38.             End Try
      39.             QueryPerformanceCounter(begintime)
      40.             PrimeTable(0) = 3
      41.             For num = 2 To top
      42.                 If TestPrime(num) Then
      43.                     If oufile IsNot Nothing Then
      44.                         oufile.Write("{0},", num)
      45.                     End If
      46.                     n += 1
      47.                 End If
      48.             Next
      49.             QueryPerformanceCounter(endtime)
      50.             QueryPerformanceFrequency(freqtime)
      51.             Console.WriteLine("在<={0}时共有{1}个素数", top, n)
      52.             If oufile IsNot Nothing Then
      53.                 oufile.WriteLine()
      54.                 oufile.WriteLine("在<={0}时共有{1}个素数", top, n)
      55.                 oufile.Close()
      56.                 Console.WriteLine("结果保存在: {0}", filename)
      57.             End If
      58.             resulttime = (endtime - begintime) * 1000 / freqtime
      59.             Console.WriteLine("处理时间: {0}时{1}分{2}.{3:000}秒", resulttime / 3600000, (resulttime / 60000) Mod 60, (resulttime / 1000) Mod 60, resulttime Mod 1000)
      60.             Console.ReadLine()
      61.         End Sub
      62.         Shared PrimeTable As UInteger() = New UInteger(6542) {}
      63.         Shared TableIndex As UShort = 0
      64.         Private Shared Function TestPrime(ByVal n As UInteger) As Boolean
      65.             Dim i As UInteger = 0
      66.             If n = 1 Then
      67.                 Return False
      68.             ElseIf n = 2 Then
      69.                 Return True
      70.             End If
      71.             If n Mod 2 = 0 Then
      72.                 Return False
      73.             End If
      74.             i = 0
      75.             While PrimeTable(i) * PrimeTable(i) <= n
      76.                 If n Mod PrimeTable(i) = 0 Then
      77.                     Return False
      78.                 End If
      79.                 i += 1
      80.             End While
      81.             If n <= 65521 Then
      82.                 PrimeTable(System.Math.Max(System.Threading.Interlocked.Increment(TableIndex),TableIndex - 1)) = n
      83.             End If
      84.             Return True
      85.         End Function
      86.     End Class
      87. End Namespace