C语言,列出100以内的素数 5

#include"stdafx.h"#include"stdio.h"#include"windows.h"#include"stdlib.h"intmain(intar... #include "stdafx.h"#include "stdio.h"#include "windows.h"#include "stdlib.h"int main(int argc, char* argv[]){ int n,i; for(n=2;n<=100;n++) { for(i=2;i<n;i++) { if(n%i==0) break; } if(i>=n) printf("%d\t",n); }}为什么for(n=2;n<=100;n++), for(i=2;i<n;i++), if(i>=n)?

为什么输出结果先是2?
展开
 我来答
胡说八道小鬼4e161e
2018-06-10 · TA获得超过1.2万个赞
知道小有建树答主
回答量:816
采纳率:100%
帮助的人:24万
展开全部

列出100以内的素数

代码如下:

#include <stdio.h>

int main(void)

{

int i,j,k;

printf("%d\n",2);2肯定是素数[em02]

for(i=1;i<=100;i+=2)

{

for(j=2;j<i;j++)

if(i%j==0)      break;

if(i==j)

printf("%d\n",i);

}

return 0;

}

拓展资料

从console输入一个数,判断这个数是否为素数(质数)。

代码如下:

判断过程代码如下:

素数是指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。要判断这个数是不是素数,需要将比它小的数(除1外)整除它,如果能就说明这不是素数。

My_Persistence
2017-06-29 · TA获得超过3468个赞
知道大有可为答主
回答量:1201
采纳率:81%
帮助的人:435万
展开全部
#include <stdio.h>
#include <math.h>
//判断整数是否为素数
int isPrime(int n)
{
    int i;
    for(i=2;i<=(int)sqrt(n);i++) //遍历从2~n的平方根向下取整
        if(n%i == 0)  //如果有i能被n整除,则n不是素数,返回0,否则返回1
            return 0;
    return 1;
}
int main()
{
int i,count;
for(i=2,count=0;i<100;i++) //i初始为2,count初始为0
if(isPrime(i))  //如果i是素数,执行if语句体
{
printf("%-5d",i);
count++;
if(count%10==0)  //每输出10个素数则输出一个换行
printf("\n");
}
printf("\n");
return 0;
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
windkni
2014-03-16 · TA获得超过387个赞
知道小有建树答主
回答量:251
采纳率:100%
帮助的人:235万
展开全部
第一个for是从2循环到100 为什么没有0和1呢 因为我们已经知道0和1不可能是素数 所以我们不用在循环里面加入这两个数
第二个for是因子 因子就是除数 当然不能为0 为1没有意义 所以当然是从2开始循环
你主要要理解求素数的算法 用这个数从2开始除起一直到他本身(或者是他的开平方) 每次除数加1 如果每次的余数都不为0 说明这个数是素数
我们从程序一步一步看起 第一步n=2 往下运行 i=2 然后进入if判断语句 2%2==0 跳出循环 然后因为2>=2 所以输出了2
更多追问追答
追问
for(i=2;i<n;i++)和for(i=2;i<100;i++)有什么区别?
追答
你没理解为什么要到n    求一个素数  我们只要除以不大于他本身的所有自然数  只要余数不为0  说明就是素数  如果你这样写   当n=2时     他就要运行2%2  2%3  2%4.....2%100   这样不但可能得不到正确结果 还影响程序运行效率
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nionydas
2014-03-16 · TA获得超过459个赞
知道小有建树答主
回答量:272
采纳率:0%
帮助的人:350万
展开全部
for(n=2;n<=100;n++) 是为了遍历100以内的数,保证100以内的每个数都可以检测一下是不是为素数,for(i=2;i<n;i++) 是为了 看看这个数有没有可以除尽的数,有的话就不是素数了 if(i>=n)?这个是判断因数是不是大于等于n,如果是,说明他就是素数了,打印出来同时加个制表符的空格。
追问
n不能等于0或1吗?

第二个for不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-16
展开全部
因为你用的是for循环语句,for循环首先要有初始而后有终结因为你要求100以内的素数,而素数从二开始,所以第一个语句for循环。第二个for循环是为了确定他是否有因子。因为一个数的因子只可能小于他的本身。如果在i<n的所有数字里都没有他的因子,那么这个数肯定为质数。如果i一直循环到大于n那么这个数必定为质数则可以输出。
其次这道题中的break语句要注意了,注意 break语句的使用。
追问
n不能等于0或1吗?

第二个for不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式