求高手帮忙写个算法

wozuiaijiahui 2012-07-04 02:24:16
输入一个数字(一定是大于0的正整数),要求算出乘机等于这个数的2个数,并且那2个数的差最小,比如:输入24,可以有多种组合,1和24,2和12,3和8,4和6,但是差最小的是4和6,就把4和6打印出来,但是如果输入的数为质数,比如:23,那就求出比23大的非质数的乘机,也就是24,所以打印的还是4和6,比23大的非质数很多,一定要最小的那个。各位高手帮帮忙看看吧。
...全文
124 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ParanoidKing 2012-07-04
  • 打赏
  • 举报
回复

bool IsPrime(int n)
{
int sqrt = (int)Math.Ceiling(Math.Sqrt(n));
for (int i = 2; i <= sqrt; i++)
{
if (n % i == 0)
return false;
}
return true;
}

int[] FindNumber(int n)
{
while (IsPrime(n))
n++;

int sqrt = (int)Math.Floor(Math.Sqrt(n));
while (n % sqrt != 0)
sqrt--;
return new int[] { sqrt, n / sqrt };
}

// test
FindNumber(24); // 4,6
FindNumber(23); // 4,6
xiaoyu821120 2012-07-04
  • 打赏
  • 举报
回复
其实你这题不难,只是涉及到的算法点比较多,算是一个比较综合的算法题。如果对性能没有太大要求的话,有很多种算法。建议你可以研究下提取因数,判断质数这些基础算法。
bdmh 2012-07-04
  • 打赏
  • 举报
回复

List<int> list = Enumerable.Range(1,24).ToList();
int cha = 0;
string s = "";
for (int i = 0; i < list.Count-1; i++)
{
for (int j = i + 1; j < list.Count; j++)
{
if (i * j == 24)
{
if (cha > Math.Abs(i - j))
{
s = i.ToString()+ "*"+ j.ToString();
}
else
cha = Math.Abs(i - j);
}
}
}
MessageBox.Show(s);
一类资源描述:Java ASP系统毕业设计资源 1. 概述:该资源集中于Java与ASP结合的Web系统毕业设计。对于学生而言,它提供了从初步的构想到实际开发所需的全方位辅助材料,包括论文、设计文档和源代码等。 2. 包含内容: - 论文:涵盖了整个Java ASP Web系统的基础知识,设计意图、需概述、系统结构与设计哲学、相关技术的深入探索等。学生可以从论文中理解项目的全局构想和关键设计决策。 - 设计文档:详细梳理了系统的构建过程,包含需分析、系统框架设计、数据库规划、界面布局、功能模块划分等。此文档将引导学生逐步实现和调试系统。 - 源代码:提供Java与ASP整合的Web系统的完备代码,从前端界面代码(HTML、CSS、JavaScript)到后端的Java与ASP代码,再到数据库相关脚本。学生可以参考、修改或基于此代码进一步拓展。 - 辅助信息:包括其他与项目相关的技术文档、API手册、使用的第三方库的指导文档等,旨在帮助学生顺利解决技术上的难题。 3. 使用方法:建议学生首先浏览论文,了解系统的背景与设计目标。随后,依照设计文档进行具体的实现工作。当遇到技术问题时,可以查找辅助信息或参考源代码。源代码可以作为实现的起点或验证设计的有效性。 4. 注意事项:使用资源时,学生需确保遵守学校和课程的规定,防止直接复制粘贴,鼓励真正理解和原创。在借鉴源代码时,重要的是确保学生理解代码的逻辑和工作原理,而不仅仅是简单地复制。 希望这种资源描述能为您提供所需的信息。如有其他问题或需要更多的描述,请告诉我。

110,501

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧