首页 > 其他 > 详细

半质数

时间:2014-02-17 17:41:05      阅读:429      评论:0      收藏:0      [点我收藏+]
//质数是大家熟知的概念,我们定义一个半质数的概念:如果一个数恰好是两个质数的乘积(可以相同),
//则称它为半质数。前几个半质数是 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秒以内就好

半质数

原文:http://blog.csdn.net/a120705230/article/details/19307247

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!