半质数

来源:互联网 发布:电视棒在淘宝上搜不到 编辑:程序博客网 时间:2024/04/27 18:44
//质数是大家熟知的概念,我们定义一个半质数的概念:如果一个数恰好是两个质数的乘积(可以相同),
//则称它为半质数。前几个半质数是 4, 6, 9, 10, 14, 15, 21, 22, 25, 26。我们的问题是,输入两个正整数x<=y,
//问[x,y]之间有多少个半质数? 输入:x,y 输出:[x,y]之间有多少个半质数。 输入数据范围 1<=x<=y<=2000000。
//祝所有挑战的Heros 2014年情人节、元宵节快乐。
using System;public class Test{    public static int howmany(int x, int y)    {        int count = 0;        for (int i = x; i < y; i++)        {            if (isSemiPrimer(i))            {                count++;            }        }        return count;    }    public static void Main()    {        DateTime dateStart = DateTime.Now;        Console.WriteLine(howmany(1, 2000000));        TimeSpan span = DateTime.Now - dateStart;        Console.WriteLine(span.TotalSeconds.ToString());    }    public static bool isPrime(int x)    {        for (int i = 2; i <= Math.Sqrt((double)x); i++)        {            if (x % i == 0)            {                return false;            }        }        return true;    }    public static bool isSemiPrimer(int x)    {        for (int i = 2; i <= Math.Sqrt((double)x); i++)        {            if (x % i == 0)            {                return isPrime(x / i) && isPrime(i);            }        }        return false;    }}

麻烦大神优化一下代码,效率好低啊我的,3秒以内就好

0 0
原创粉丝点击