首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数间隔分割成X小区间

将数间隔分割成X小区间
EN

Stack Overflow用户
提问于 2017-03-10 20:53:34
回答 1查看 812关注 0票数 0

我正在开发一个客户端服务器应用程序,在给定的时间间隔内计算素数。客户端已经完成,但是我被服务器卡住了。我正在寻找算法,它将给定的间隔分解为X(连接的客户数量)较小的。(例如,有5个客户的2-50会分成2-10,11-20,21-30,31-40,41- 50 )有人能帮我找到有用的算法吗?谢谢。

找到了这段代码,但不适用于大的数字

代码语言:javascript
运行
复制
    private static string[] divide(ulong min, ulong max, ulong parts)
    {
        if (min > max) return null;
        List<string> list = new List<string>(); 
        ulong chunksize = max / parts;
        ulong chunkstart = min;
        ulong chunkend = chunkstart + chunksize - 1;
        while(chunkstart < max)
        {
            if(chunkend > max)
            {
                list.Add(string.Format("{0}:{1}", chunkstart, max));
                break;
            }
            list.Add(string.Format("{0}:{1}", chunkstart, chunkend));
            chunkstart += chunksize;
            chunkend += chunksize;
        }
        return list.ToArray();
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-10 21:36:23

试试看。检查参数“部件”的值是否用于分割间隔的长度,而不是像您所做的那样划分最大值。这段代码也说明了剩余的部分,并将其分配给开头的间隔。这就是为什么对于您的输入(min:2,max:50,部件:5),它给出输出

2:12

12:22

22:32

32:41

41:50

代码语言:javascript
运行
复制
using System.IO;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var x = Divide(2, 50, 5);
        foreach(var y in x) Console.WriteLine("{0}:{1}", y.Item1, y.Item2);
    }
    private static List<Tuple<ulong, ulong>> Divide(ulong min, ulong max, ulong parts) 
    {
        ulong stepSize = (max - min) / parts;
        if (stepSize <= 0) return null;

        ulong mod = (max - min) % parts;
        var result = new List<Tuple<ulong, ulong>>();
        ulong begin = min;
        ulong end;
        for (ulong i = 0; i < parts; i++) 
        {
            end = begin + stepSize;
            if (mod > 0)
            {
                mod--;
                end += 1;
            }
            var t = new Tuple<ulong, ulong>(begin, end);
            result.Add(t);
            begin = end;
        }
        return result;
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42727541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档