解决质数检验的心理方法
本文关键字:方法 检验 解决 | 更新日期: 2023-09-27 18:18:51
我正在尝试开发一个程序,将打印到控制台之间的所有素数1和100。我在试图把这个问题概念化时遇到了麻烦。有多个嵌套的循环,我忘了逻辑。下面是不完整的代码/伪代码:
using System;
class Prime_Screening
{
static void Main()
{
Console.WriteLine("This program screens all numbers between 1 and 100 for primes and displays the results.");
for (int numberToPrimeCheck = 2; numberToPrimeCheck <= 100; numberToPrimeCheck++)
{
for (int divisor = 2; divisor <= Math.Sqrt(numberToPrimeCheck); divisor++)
{
int remainder = 0;
while (remainder = 0)
{
remainder = numberToPrimeCheck % divisor;
if (remainder != 0)
{
break;
}
}
}
}
}
}
真是一团糟。我不知道从哪里开始这个项目。从逻辑上讲,它看起来像一个大线球。我知道remainder = numberToPrimeCheck %divisor是这个问题的核心,但是我是从那里开始还是从第一个循环开始呢?
当你写这样一个小程序的时候,你是从哪里开始考虑的?我是一名初级程序员,但是书籍不会教你在哪里以及如何思考一个编程问题。有人能教我解决这样一个问题的思路吗?
我明白了,这个问题太宽泛了。但有些问题本质上并不狭窄,而是成为一名优秀程序员所必需的。SO是限制太多。我不只是想要我的代码的答案,我想学习如何思考和解决一般的编程问题。using System;
class Prime_Screening
{
bool prime;
static void Main()
{
Console.WriteLine("Prime numbers x, where: 0 < x < 100");
for (int num= 2; num<= 100; num++)
{
prime = True;
for (int div= 2; div<= Math.Sqrt(num); div++)
if(num % div== 0)
prime = False;
if (prime)
Console.Write(num.ToString() + ", ");
}
}
}
工作方式非常简单:
它检查是否有任何除数是当前数字的因数,如果是,则将变量prime
设置为false。否则,prime仍然为真,并打印数字。
这听起来像是考试题目…尽管如此,您应该能够使用"mod"函数实现这一点。如果"mod" == 0则prime = false
正确的代码如下:
using System;
class Program
{
static void Main()
{
Console.WriteLine("This program screens all numbers between 1 and 100 for primes and displays the results.");
for (var numberToPrimeCheck = 2; numberToPrimeCheck <= 100; numberToPrimeCheck++)
{
var remainder = 1;
for (var divisor = 2; divisor <= Math.Sqrt(numberToPrimeCheck); divisor++)
{
remainder = numberToPrimeCheck % divisor;
if (remainder == 0)
{
break;
}
}
if (remainder != 0)
Console.WriteLine(numberToPrimeCheck);
}
}
}