| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9802 人关注过本帖
标题:怎样用while语句求出100以内的素数
只看楼主 加入收藏
hsjjgm
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:106
专家分:189
注 册:2013-4-27
收藏
得分:5 
新手交流
1.用while
#include<stdio.h>

int main(void)
{
    int i = 3;

    while(i <= 100)
    {
        int j = 2;

        while(j < i)
        {
            if(i%j == 0)
                break;
            j++;
        }
    if(j == i)
    {
        printf("%d\n", i);
    }

    i++;

    }

    return 0;
}
用for
#include<stdio.h>

int main(void)
{
    int i, j;
   
    for(i = 3; i < 100; i++)
    {
        for(j = 2; j < i; j++)
        {
            if(i%j == 0)
                break;
        }
        if(j == i)
        {
            printf("%d\n", i);
        }
    }
    return 0;
}
用函数
#include<stdio.h>

bool su(int i)
{
    int j;
   
    for(j=2; j < i; j++)
    {
        if(i%j == 0)
            break;
    }
    if (i == j)
        return true;
    else
        return false;
}

int main(void)
{
    int i;

    for(i = 3; i < 100; i++)
    {
        su(i);
    if(su(i))
    {
        printf("%d\n", i);
    }
    }

    return 0;
}
具体还可以用i/2,sqrt i 啥的去判断,效率会高很多
2013-04-27 17:45
不才
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2013-4-13
收藏
得分:0 
以下是引用邓士林在2013-4-26 23:29:13的发言:

不让有作业贴,给你核心代码:
while(n <= 100)
{  i = 2;  flag = 0;  
while(i < n)
{     if(n%i == 0)
{        flag = 1;        
break;     
}   
 ++i;  
}

为什么我看都看不懂,有新手看的懂得么?
2013-04-27 19:47
业余爱好者
Rank: 2
等 级:论坛游民
帖 子:28
专家分:23
注 册:2013-4-23
收藏
得分:5 
#include<stdio.h>
int main()
{
   int i=0;
   while(i<=100)
   {  
       if(i%2!=0&&i%3!=0)
        printf("1到100的素数是%d\n",i);
      i++;
   }
  return 0;
}
2013-04-27 22:57
YoungerK
Rank: 2
来 自:浙江
等 级:论坛游民
帖 子:9
专家分:25
注 册:2013-1-6
收藏
得分:2 
回复 12楼 不才
flag的作用是标记该数不是素数用得,外面的那个while循环再加上n的自加就能通过flag来判断当前循环的n是否为素数

遗憾往往发生在不经意间!
2013-04-27 23:08
YoungerK
Rank: 2
来 自:浙江
等 级:论坛游民
帖 子:9
专家分:25
注 册:2013-1-6
收藏
得分:0 
#include <stdio.h>
#include <math.h>
#define N 100
int main(int argc,char* argv[]){
    int n=3;
    while(n<=N){
        int i=2,flag=0;
        while(i < (int)sqrt(n)){
            if(n/i==0){
                flag = 1;
                break;   
            }
        }
        if(!flag)
            printf("%d ",n);
        ++n;   
    }
    return 0;
}

遗憾往往发生在不经意间!
2013-04-27 23:21
快速回复:怎样用while语句求出100以内的素数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016448 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved