黑马程序员技术交流社区
标题:
这个题该怎么做?
[打印本页]
作者:
班顶超
时间:
2012-5-21 13:09
标题:
这个题该怎么做?
本帖最后由 班顶超 于 2012-5-21 15:22 编辑
打印出1-1000之间的素数
作者:
喻健
时间:
2012-5-21 15:23
本帖最后由 喻健 于 2012-5-21 15:29 编辑
using System;
namespace sushu
{
class Program
{
public static void Main(string[] args)
{
for(int i=1;i<100;i++)
{
if(isOdd(i))
{
Console.WriteLine("{0}是素数",i);
}
}
Console.ReadKey(true);
}
public static bool isOdd(int num)
{
bool flag=true;
if(num==1)
flag=false;
if(num==2)
{
flag =true;
}
else
{
for(int i=2;i<num;i++)
{
if(num%i==0)
flag=false;
}
}
return flag;
}
}
}
复制代码
作者:
吴淑金
时间:
2012-5-21 17:58
喻健 发表于 2012-5-21 15:23
楼上可以优化一下:
首先素数不会是偶数,
第11行:
for(int i=1;i<100;i++)
{
if(isOdd(i))
{
Console.WriteLine("{0}是素数",i);
}
}
条件可以改为:(i<100)&&(i%2!=0) 筛选掉偶数
第32行:
for(int i=2;i<num;i++)
{
if(num%i==0)
flag=false;
}
只要i<Math.Sqrt(num) 就可以了, 没有必要从2除到num-1。
作者:
麦田守望者0812
时间:
2012-5-21 18:28
public class Test1 {
public static void main(String[] args) {
for(int i = 1; i < 1000; i++ ) {
int m = 0;
for(int j = 1; j < (i + 2)/2; j++ ) {
if((i % j) == 0) m++;
}
if(m < 2)
System.out.println(i + " 为素数");
}
}
}
作者:
余宏
时间:
2012-5-22 20:12
public class SuShu {
public static void main(String[] args) {
for(int i=2;i<=1000;i++){
for(int j=2;j<=i/2;j++){
if(i%j==0)
break;
}
if(i>i/2){
System.out.println("1~1000之间的素数:"+i);
}}}}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2