可能重复:
Prime Factors In C#
我试图让这个编码给我输入的整数的所有主要因素,包括它的重复。我有这个当前的代码,它似乎有点工作,但它没有显示它的所有主要因素和重复。任何帮助将不胜感激。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _1_Numeric_Problem
{
class Program
{
static void Main(string[] args)
{
string myInput;
int myInt;
int p;
Console.WriteLine(("Please input an integer"));
myInput = Console.ReadLine();
myInt = Int32.Parse(myInput);
{
for (int i = 2; i > 1; i++)
{
if (i == 100000)
break;
if (myInt % i == 0)
{
if (i <= 3)
{
Console.Write("{0} ", i);
Console.ReadLine();
continue;
}
else
{
for (p = 2; p < i; p++)
if (i % p != 0)
{
Console.Write("{0} ", i);
Console.ReadLine();
return;
Console.ReadLine();
}
else
{
p++;
continue;
}
}
}
}
}
}
}
}
答案 0 :(得分:2)
尝试替换以下代码:
for (p = 2; p < i; p++) {
if (i % p != 0) {
Console.Write("{0} ", i);
Console.ReadLine();
return;
Console.ReadLine();
} else {
p++;
continue;
}
}
改为:
bool isPrime = true;
for (p = 2; p <= Math.Sqrt(i); p++) {
if (i % p == 0) {
isPrime = false;
break;
}
if (isPrime) {
Console.Write("{0} ", i);
Console.ReadLine();
}
}
答案 1 :(得分:1)
你不能像这样制作一个for循环吗?
for (int i = 2; i < myInt; i++)
{
if(myInt % i == 0)
//Do something with it.
}
答案 2 :(得分:1)
使用试验分区进行整数分解的基本算法尝试从2开始的每个潜在因子,如果它除以 n ,则输出因子,减少 n ,并搜索下一个因素;请注意,如果 f 除以 n ,则 f 不会递增,因为它可能会再次划分缩小的 n 。当 f 大于 n 的平方根时,循环停止,因为此时 n 必须是素数。这是伪代码:
function factors(n)
f := 2
while f * f <= n
if n % f == 0
output f
n := n / f
else
f := f + 1
output n
有更好的方法来计算整数,但这应该让你开始。如果您准备好了更多内容,我会在我的博客上谦虚地推荐这个essay。