C语言 输出1到100之间的全部素数?

知道的高手请帮忙写一下,谢谢最好再给运行一下谢谢了..... 知道的高手请帮忙写一下,谢谢 最好再给运行一下 谢谢了.. 展开
 我来答
来日方长mmgo
高粉答主

推荐于2019-11-06 · 每个回答都超有意思的
知道小有建树答主
回答量:508
采纳率:100%
帮助的人:14.3万
展开全部

有三种方法:

1、输出1-100以内的素数:

2、同样,也是输出1-100以内的素数,这个构造一个数组,将其所有元素初始化为1,表示素数,这时取x从2开始,到100以内做循环。

若x为素数,即prime[x]!=0,使得每个i*x位置元素置0(prime[i*x]=0),表示为非素数,循环结束前x+1。

3、该方法是输出100个素数,基本思想是构造一个素数表,利用函数判断每个数是否能被其之前的素数整除,如果不能,则在素数表内加上该元素,不断循环(while循环结束条件是cnt即数组个数>100)。

扩展资料:

在这个小程序中主要用到的是for循环

for 循环语句的一般形式为:

for (表达式1; 表达式2; 表达式3)

{

语句;

}

需要注意的两点:

1) 表达式1、表达式2和表达式3之间是用分号;隔开的,千万不要写成逗号。

2) for(表达式1;表达式2;表达式3)的后面千万不要加分号,很多新手都会犯这种错误——会情不自禁地在后面加分号。

因为 for 循环只能控制到其后的一条语句,而在C语言中分号也是一个语句——空语句。所以如果在后面加个分号,那么 for 循环就只能控制到这个分号,下面大括号里面的语句就不属于 for 循环了。

风若远去何人留
推荐于2018-03-20 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部

遍历所有值,判断是否为素数,如是,则输出。

一、算法设计:

1、遍历1到100之间所有数,由于1的特殊性,不是素数也不是合数,所以可以从2开始遍历;

2、对于每一个数,判断是否为素数;

3、如果是素数,则输出,否则继续下一个。

二、参考代码:

#include <stdio.h>
#include <math.h>
int isPrime(int n)//判断素数函数。
{
    int i;
    for(i = 2; i <= (int)sqrt(n); i ++)//从2到算数平方根遍历。
        if(n%i == 0) return 0;//存在约数,非素数,返回0.
    return 1;//是素数,返回1.
}
int main()
{
    int i;
    for(i = 2; i <= 100; i ++)//遍历。
        if(isPrime(i))//是素数。
            printf("%d ", i);//输出素数。
    return 0;
}

三、运行截图:

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
胡穰将又菡
2019-11-15 · TA获得超过5198个赞
知道大有可为答主
回答量:3189
采纳率:26%
帮助的人:234万
展开全部

遍历所有值,判断是否为素数,如是,则输出。
一、算法设计:
1、遍历1到100之间所有数,由于1的特殊性,不是素数也不是合数,所以可以从2开始遍历;
2、对于每一个数,判断是否为素数;
3、如果是素数,则输出,否则继续下一个。
二、参考代码:
#include <stdio.h>
#include <math.h>
int isPrime(int n)//判断素数函数。
{
    int i;
    for(i = 2; i <= (int)sqrt(n); i ++)//从2到算数平方根遍历。
        if(n%i == 0) return 0;//存在约数,非素数,返回0.
    return 1;//是素数,返回1.
}
int main()
{
    int i;
    for(i = 2; i <= 100; i ++)//遍历。
        if(isPrime(i))//是素数。
            printf("%d ", i);//输出素数。
    return 0;
}
三、运行截图:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jdtxse
2010-07-10
知道答主
回答量:11
采纳率:0%
帮助的人:24.3万
展开全部

#include<iostream>

#include<cmath>

using namespace std;

int judge(int a)

{

 int i;

 for(i=2;i<=(int)sqrt(a);i++)

  if(a%i==0)return 0;

  return 1;

}

int main(int argc, char* argv[])

{

 cout<<"2 3 ";

 for(int i=4;i<=100;i++)

 {

  if(judge(i))cout<<i<<" ";

 }

 cout<<endl;

 return 0;

}

参考资料: 自己写的。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
溜到被人舔

2019-12-21 · TA获得超过6.8万个赞
知道顶级答主
回答量:8.2万
采纳率:96%
帮助的人:2972万
展开全部
有三种方法:

1、输出1-100以内的素数:

2、同样,也是输出1-100以内的素数,这个构造一个数组,将其所有元素初始化为1,表示素数,这时取x从2开始,到100以内做循环。

若x为素数,即prime[x]!=0,使得每个i*x位置元素置0(prime[i*x]=0),表示为非素数,循环结束前x+1。
3、该方法是输出100个素数,基本思想是构造一个素数表,利用函数判断每个数是否能被其之前的素数整除,如果不能,则在素数表内加上该元素,不断循环(while循环结束条件是cnt即数组个数>100)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(12)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式