C#,愚弄数(Hoax Number)的计算方法与源代码

这篇具有很好参考价值的文章主要介绍了C#,愚弄数(Hoax Number)的计算方法与源代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

愚数是什么数,C#算法演义 Algorithm Recipes,c#,算法,教程

一、愚弄数(Hoax Number)

愚弄数(Hoax Number)是一种组合数字, 其数字总和等于其不同质因数的数字总和。
注:1不被视为质数, 因此它不包含在不同质因数的总和中。
有些愚弄数(Hoax Number)数字也是史密斯数字(Smith Number)。

运行效果:

愚数是什么数,C#算法演义 Algorithm Recipes,c#,算法,教程

二、愚弄数的计算方法

1、首先生成数字 x 的所有唯一质数;
2、如果 x 不是质数, 请找到在步骤1中获得的因子的数字总和;
3、找到数字 x 的总和;
4、检查在步骤2和3中获得的总和是否相等;
5、如果总和相等, 则 x 是一个hoax数字。

三、算法步骤

1、输入要检查的数字n。
2、如果n大于1,则迭代循环。质数从2开始,所以一开始,循环从2开始,即i=2。
3、如果n%i=0,则在ArrayList中添加i,并返回n=n/i以进行进一步迭代。
4、要检查不同的质数因子,请检查ArrayList是否包含任何重复的元素,并在另一个ArrayList中添加不同的元素。
5、现在,要找到ArrayList中的数字之和,请迭代循环,直到达到ArrayList的大小。
6、求数组中每个数字的和。
7、打印质数因子的位数之和。
8、现在,找到输入的数字的数字之和,然后打印。
9、最后,检查从第7步和第8步获得的总和,如果它们相等,则该数字是一个愚弄数,否则它不是一个愚弄数。

源代码

using System;
using System.Collections;
using System.Collections.Generic;

namespace Legalsoft.Truffer.Algorithm
{
	/// <summary>
	/// C# code to check if a number is a hoax number or not.
	/// This code is contributed by Manish Shaw (manishshaw1)
	/// </summary>
	public static class HoaxNumber
	{
		/// <summary>
		/// 计算 x 的全部不同质因子
		/// Function to find distinct 
		/// prime factors of given number n
		/// </summary>
		/// <param name="x"></param>
		/// <returns></returns>
		public static List<int> PrimeFactors(int x)
		{
			List<int> res = new List<int>();
			if ((x % 2) == 0)
			{
				while ((x % 2) == 0)
				{
					x = x / 2;
				}
				res.Add(2);
			}

			for (int i = 3; i <= Math.Sqrt(x); i = i + 2)
			{
				if ((x % i) == 0)
				{
					while ((x % i) == 0)
					{
						x = (x / i);
					}
					res.Add(i);
				}
			}

			if (x > 2)
			{
				res.Add(x);
			}
			return res;
		}

		/// <summary>
		/// Function to calculate sum of digits of distinct
		/// prime factors of given number n and sum of
		/// digits of number n and compare the sums obtained
		/// </summary>
		/// <param name="n"></param>
		/// <returns></returns>
		public static bool IsHoax(int x)
		{
			List<int> pf = PrimeFactors(x);

			if (pf[0] == x)
			{
				return false;
			}

			int all_pf_sum = 0;
			for (int i = 0; i < pf.Count; i++)
			{
				int pf_sum = 0;
				while (pf[i] > 0)
				{
					pf_sum += pf[i] % 10;
					pf[i] /= 10;
				}
				all_pf_sum += pf_sum;
			}

			int sum_n = 0;
			while (x > 0)
			{
				sum_n += x % 10;
				x /= 10;
			}
			return (sum_n == all_pf_sum);
		}
	}
}

 ——————————————————————

POWER BY 315SOFT.COM &
TRUFFER.CN文章来源地址https://www.toymoban.com/news/detail-809997.html

到了这里,关于C#,愚弄数(Hoax Number)的计算方法与源代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • C# 关于源代码生成

    步骤1: 首先建立一个控制台程序 SourceGeneratorDome1 选择版本.net7 代码如下: 建立类文 件  GreetingUsePartialClassm 这是一个类分布文件。 看清楚哟。这里只是定义了一个分布类和分布方法。具体实现方法通过源代码生成 步骤2:建立一个源代码生成项目 但是类型选择. netstanda

    2024年02月11日
    浏览(40)
  • C# 源代码生成器

    C# 源代码生成器

    源生成器 是由 .NET Compiler Platform(“Roslyn”) SDK 附带。 通过源生成器,C# 开发人员可以在编译用户代码时检查用户代码。 生成器可以动态创建新的 C# 源文件,这些文件将添加到用户的编译中。 这样,代码可以在编译期间运行。 它会检查你的程序以生成与其余代码一起编译

    2024年02月04日
    浏览(36)
  • C#,字符串匹配(模式搜索)Sunday算法的源代码

    C#,字符串匹配(模式搜索)Sunday算法的源代码

    Sunday算法是Daniel M.Sunday于1990年提出的一种字符串模式匹配算法。 核心思想:在匹配过程中,模式串并不被要求一定要按从左向右进行比较还是从右向左进行比较,它在发现不匹配时,算法能跳过尽可能多的字符以进行下一步的匹配,从而提高了匹配效率。 Sunday算法思想跟

    2024年01月23日
    浏览(9)
  • C#,字符串匹配(模式搜索)原生(Native)算法的源代码

    C#,字符串匹配(模式搜索)原生(Native)算法的源代码

    算法没什么可说的,就是一段一段匹配呗。 运行效果:  源代码: using System; using System.Collections; using System.Collections.Generic; namespace Legalsoft.Truffer.Algorithm {     /// summary     /// 字符串匹配(模式搜索)算法集锦     /// /summary     public static partial class PatternSearch     {   

    2024年02月01日
    浏览(15)
  • C#与VisionPro联合开发实例教程:详细步骤与源代码

    C#与VisionPro联合开发实例教程:详细步骤与源代码 在本教程中,我们将深入介绍如何使用C#编程语言与VisionPro图像处理软件进行联合开发。我们将通过一个完整的项目示例来演示此过程,包括详细的步骤和相应的源代码。 步骤1:环境准备 首先,确保你已经安装了以下软件:

    2024年02月06日
    浏览(97)
  • EtherNet/IP开发:JAVA、C#和C++开发源代码

    EtherNet/IP开发:JAVA、C#和C++开发源代码

    示例使用VS2010开发EtherNet/IP 开发语言使用C++ C++开发出来的程序,提供C标准API后,将可以提供给Dlphi、Labview、VB、QT、C#、CC++、C#、Java等几乎所有编程语言使用。 ① 在底层我们将采用socket和多线程方式开发,在数据处理方面使用指针为主。 ② EtherNet/IP在设计之初就是为高效

    2024年01月21日
    浏览(39)
  • C#中LINQ的使用知多少?LINQ常功能整理,实例源代码解析

    C#中LINQ的使用知多少?LINQ常功能整理,实例源代码解析

      LINQ(Language-Integrated Query)是C#语言中的一个强大的查询技术,它提供了一种统一的查询语法,可以用于查询和操作各种数据源,包括集合、数据库、XML等。下面详细描述了LINQ的20个功能点,并提供了相应的源代码。 查询集合中的所有元素: 使用条件过滤集合中的元素:

    2024年02月05日
    浏览(9)
  • C#,字符串匹配(模式搜索)RK(Rabin Karp)算法的源代码

    C#,字符串匹配(模式搜索)RK(Rabin Karp)算法的源代码

     M.O.Rabin Rabin-Karp算法,是由M.O.Rabin和R.A.Karp设计实现的一种基于移动散列值的字符串匹配算法。 通常基于散列值的字符串匹配方法:(1)首先计算模式字符串的散列函数;(2)然后利用相同的散列函数计算文本中所有可能的M个字符的子字符串的散列函数值并寻找匹配。但是

    2024年01月19日
    浏览(10)
  • C#,字符串匹配(模式搜索)KMP算法的源代码与数据可视化

    C#,字符串匹配(模式搜索)KMP算法的源代码与数据可视化

      D.E.Knuth   J.H.Morris KMP 算法(Knuth-Morris-Pratt 算法)是其中一个著名的、传统的字符串匹配算法,效率比较高。 KMP算法由 D.E.Knuth , J.H.Morris 和 V.R.Pratt 在 Brute-Force 算法的基础上提出的模式匹配的改进算法。因此人们称它为“克努特—莫里斯—普拉特算法”,简称KMP算法。K

    2024年01月25日
    浏览(15)
  • C#,归并排序算法(Merge Sort Algorithm)的源代码及数据可视化

    C#,归并排序算法(Merge Sort Algorithm)的源代码及数据可视化

    归并算法采用非常经典的 分治策略 ,每次把序列分成n/2的长度,将问题分解成小问题,由复杂变简单。 因为使用了递归算法,不能用于大数据的排序。 核心代码: using System; using System.Text; using System.Collections.Generic; using System.Windows.Forms; namespace WindowsFormsApp6 {     public parti

    2024年02月02日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包