英文:
How do I fix this (perl)
问题
这是Perl代码,用于找到用户提供的数字范围内的所有素数。问题可能出在代码的逻辑错误和重复变量名上。以下是一些潜在问题:
-
在代码中有多个地方都使用了相同的变量名
$i
和$j
,这可能导致混淆和逻辑错误。 -
在三个嵌套的
for
循环中,循环变量$i
和$j
的使用混淆,应该使用不同的变量名来表示不同的计数器。 -
在第一个
if
语句中,检查$numberer
是否小于或等于3,这似乎不是正确的条件。应该检查$i
是否小于或等于3。 -
代码中似乎试图使用
@nonprime
数组来存储非素数,但在处理非素数时,逻辑不清晰。应该考虑一种更简单和有效的方法来标识非素数。 -
在最后一行使用
Dumper
来打印结果,但它只会打印出已存储在@nonprime
数组中的非素数,而没有找到素数。
如果你需要进一步的帮助,我建议首先修复这些问题,然后尝试重新编写代码,以确保正确地找到素数并输出它们。如果你有关于Perl编程的具体问题,也可以提出来,我会尽力帮助你理解和解决它们。
英文:
Here's the code; it's in Perl.
use warnings;
use strict;
use Data::Dumper;
print "I'll show the prime numbers between 2 and u numbers for you.\n";
print "Pls, enter u numbers.";
my $numberer = <STDIN>;
my @nonprime = qw();
my @all = qw();
for (my $i = 3; $i < $numberer; $i++) {
my $lenght = @all;
$all[$lenght] = $i;
for (my $i = 3; $i < $numberer; $i++) {
if ($numberer <= 3) {
print "It's none.";
} else {
for (my $i = 3; $i < $numberer; $i++) {
for (my $j = 2; $j < $numberer; $j++) {
if ($i == $j) {
} elsif ($i % $j == 0) {
my $len = @nonprime;
$nonprime[$len] = $i;
} else {
}
}
}
}
my %h;
@h{@nonprime} = @nonprime;
print Dumper [grep {!exists $h{$_}} @all];
Can you help me by explaining what the problem is? I try to learn perl programming and do some exercise that is "Write your own program to capture all the prime numbers between 2 and a number the user
gives you."
答案1
得分: 1
这段代码可能会帮助你解决问题。
#!/usr/bin/perl
use warnings;
use strict;
sub testprime
{
my $m = shift @_;
my $i = 2;
while ($i < $m)
{
return 0 unless ($m % $i++);
}
return 1;
}
print "输入一个数字来查找是否为素数:\n";
chomp (my $n = <STDIN>);
system 'cls';
for(my $i=2; $i<=$n; $i++)
{
my $FindPrime = testprime($i);
if ( $FindPrime == 1)
{
print "是的,给定的数字 - $i 是素数\n";
}
else
{
print "不,它不是素数 - $i\n";
}
}
感谢。
英文:
Might be this code will help you for your question.
#!/usr/bin/perl
use warnings;
use strict;
sub testprime
{
my $m = shift @_;
my $i = 2;
while ($i < $m)
{
return 0 unless ($m % $i++);
}
return 1;
}
print "Enter a number to find the prime \n";
chomp (my $n = <STDIN>);
system 'cls';
for(my $i=2; $i<=$n; $i++)
{
my $FindPrime = testprime $i;
if ( $FindPrime == 1)
{
print "Yes, the given number - $i is Prime \n";
}
else
{
print "No, It is NOT a prime Number - $i \n";
}
}
Thnx.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论