C#求素数

求只能被1和自己整除的正整数。

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

namespace DataStructure
{

public class Prime
{
private static List _prime=new ArrayList();
/// <summary>
/// check prime
/// </summary>
/// <param name="a"></param>
/// <returns></returns>
public static bool isPrime(int a)
{
int i;
for (i = 2; i < a; i++)
{
if (Math.IEEERemainder((float)a, (float)i) == 0) //是否能被i整除
return false;
}
return true;
}
/// <summary>
/// get all prime
/// </summary>
/// <param name="min"></param>
/// <param name="max"></param>
/// <returns></returns>
public static List getPrime(int min, int max)
{
if (min < 1)
throw new Exception("min must greater than 1");
int i;
for (i = min; i <= max; i++)
{
if (isPrime(i))
_prime.add(i);
}
return _prime;
}
/// <summary>
/// print all prime
/// </summary>
public static void printPrime()
{
_prime.print();
}
}
}

测试:


Prime.getPrime(2, 60);
Prime.printPrime();

结果:

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59

C#中,有多种方法可以实现计算素数个数。以下是几种不同场景下的代码示例: ### 计算一个数以内的所有素数的个数 ```csharp using System; class Program { static void Main() { Console.Write("请输入一个正整数:"); int n = int.Parse(Console.ReadLine()); int primeCount = 0; for (int i = 2; i <= n; i++) { bool isPrime = true; for (int j = 2; j <= Math.Sqrt(i); j++) { if (i % j == 0) { isPrime = false; break; } } if (isPrime) { primeCount++; } } Console.WriteLine("1到" + n + "之间的素数个数为:" + primeCount); Console.ReadLine(); } } ``` 上述代码参考了解一个数以内所有素数的思路,在判断每个数是否为素数的基础上,统计素数的个数 [^1]。 ### 计算n位质数的个数 ```csharp using System; class Program { static bool IsPrime(int num) { if (num <= 1) return false; if (num == 2) return true; if (num % 2 == 0) return false; for (int i = 3; i <= Math.Sqrt(num); i += 2) { if (num % i == 0) return false; } return true; } static int CountNBitPrimes(int n) { int count = 0; int start = (int)Math.Pow(10, n - 1); int end = (int)Math.Pow(10, n); for (int i = start; i < end; i++) { if (IsPrime(i)) count++; } return count; } static void Main() { Console.Write("请输入位数n:"); int n = int.Parse(Console.ReadLine()); int primeCount = CountNBitPrimes(n); Console.WriteLine(n + "位质数的个数为:" + primeCount); Console.ReadLine(); } } ``` 此代码实现了计算n位质数个数的功能,通过 `CountNBitPrimes` 函数结合 `IsPrime` 函数来判断每个n位数是否为质数并进行统计 [^5]。 ### 计算100以内质数的个数 ```csharp using System; class Program { static void Main() { int primeCount = 0; for (int i = 2; i < 100; i++) { bool isPrime = true; for (int j = 2; j <= Math.Sqrt(i); j++) { if (i % j == 0) { isPrime = false; break; } } if (isPrime) { primeCount++; } } Console.WriteLine("100以内的质数个数为:" + primeCount); } } ``` 该代码根据解100以内质数的逻辑,统计100以内质数的个数 [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值