永发信息网

用C#语言编写求出100以内所有的素数,并输出。

答案:3  悬赏:0  手机版
解决时间 2021-04-04 05:05
  • 提问者网友:浪荡绅士
  • 2021-04-03 19:40
用C#语言编写求出100以内所有的素数,并输出。
最佳答案
  • 五星知识达人网友:一叶十三刺
  • 2021-04-03 19:54
huiyangzhuang的回答是错误的,并且还是复制粘贴的C代码,并且非C#,以下是我给的亲测OK的代码,你复制粘贴即可正常运行:
========================================================
private void button1_Click( object sender, EventArgs e )
{
for( int i = 1; i <= 100; i += 2 )
{
if( i == 1 )
{
textBox1.Text = 2.ToString();
continue;
}
bool b = true;
for( int j = 3; j <= i / 3; j += 2 )
{
if( i % j == 0 )
{
b = false;
break;
}
}
if( b ) textBox1.Text += " " + i.ToString();
}
}
========================================================
以下是解释huiyangzhuang的代码为什么是“错误”的(可以不看):
huiyangzhuang的代码先不说能不能得到正确的结果,光从他的代码来分析,可以优化减少5倍左右的计算量,也就是他的代码多进行了5倍左右的完全不必要的计算,所以说是错误的。
以下在他的原代码上进行注释指出:
========================================================
bool JudegeNum(int num)
{
if(num == 1) //错误,此判断完全多余,可以直接删除,
{ //因为1不会进入下面的循环,不进入循环同样会return true,
return true; //并且1不是素数!所以应该return false才对!
}
//错误,此处多进行了3倍左右循环,可改为:for(int i=3; i<=num/3; i+=2)
//如果num能被偶数整除,那他就一定能被2整除,那他就一定是一个偶数,
//而偶数一定不是素数,所以偶数根本不要判断,后面的自己想……
for(int i=2; i<num/2; i++)
{
if(num%i == 0)
{
return false;
}
}
return true;
}
给出主函数
int main()
{
//错误,此处多进行了2倍左右循环,可改为:for(int i=1; i<=100; i+=2)
//因为偶数一定不是素数(偶数能被2整除),
//所以偶数完全没必要检测,所以是i+=2,而不是i++
for(int i=1; i<=100; i++)
{
if(JudgeNum(i) == true)
{
//输出该值
printf("%d\r\n", i);
}
}
}

========================================================
全部回答
  • 1楼网友:醉吻情书
  • 2021-04-03 22:10
static void main(string[] args) { int i, j; for (i = 2; i < 100;i++ ) { for (j = 2; j <=i/2; j++) { if (i % j == 0) break; } if (j > i / 2) console.writeline("素数: " + i); } }
  • 2楼网友:执傲
  • 2021-04-03 20:42
仅供参考: bool JudegeNum(int num) { if(num == 1) { return true; } for(int i=2; i<num/2; i++) { if(num%i == 0) { return false; } } return true; } 给出主函数 int main() { for(int i=1; i<=100; i++) { if(JudgeNum(i) == true) { //输出该值 printf("%d\r\n", i); } } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯