鱼C论坛

 找回密码
 立即注册
查看: 3502|回复: 17

用c语言求100-200中的素数

[复制链接]
发表于 2017-6-21 10:23:01 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
用c语言求100-200中的素数,求详细的解答。在代码后请以附加详细的解释。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-6-21 12:30:28 | 显示全部楼层
/*
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;
*/

#include<stdio.h>


main(void)
{
        int num1, num2;
        int i,j;
        int flag=0;  //用来标记是否为素数

        printf("请输入2个数:");
        scanf("%d %d", &num1, &num2);

        for (i=2; i<=num2; i++) //i是一个大于1的自然数,所以从2开始,以num2 为最大数
        {
               
                 for (j=1; j<i; j++)       
                {
                        if(j!=1) //素数是大于1的自然数,先排除1
                        {
                                if (i%j ==0) //是否能被其j-i之间的任意数整除
                                {
                                    flag=0;  //不是素数
                                        break;
                                }
                        }       
                        flag=1; //是素数
                }
          if (flag==1)  //是否为素数
          {
                  if (i>=num1 && i<=num2) //是否在筛选的范围内
                         printf("%d\n", i);
          }
        }

          return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-21 13:04:51 | 显示全部楼层
#include <stdio.h>

int is_prime_number(int num)
{
        for(int i = 2; i <= num / 2; i++)
        {
                if(num % i == 0)
                        return 0;
        }
        return 1;
}

int main(void)
{
        for(int i = 100; i <= 200; i++)
        {
                if(is_prime_number(i) == 1)
                        printf("%d ", i);
        }
        putchar('\n');

        return 0;
}
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
请按任意键继续. . .
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-21 18:18:10 From FishC Mobile | 显示全部楼层
人造人 发表于 2017-6-21 13:04

还没有那么高深,只知道一些简单的,,有没有更简单点的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-21 18:22:04 From FishC Mobile | 显示全部楼层
ba21 发表于 2017-6-21 12:30
/*
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;
*/

flag是什么意思呢?看懂很多了,表示感谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-21 19:23:26 | 显示全部楼层
一楼回答的很好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-21 20:15:56 | 显示全部楼层
3231991562 发表于 2017-6-21 18:22
flag是什么意思呢?看懂很多了,表示感谢。

flag就是一个标志 用来存放 0 或 非0 。0 不是素数, 1是素数;  这要看你的思路是怎么构思的。你也可以用 非0 表是不是素数, 0表示素数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-21 21:19:14 | 显示全部楼层
3231991562 发表于 2017-6-21 18:22
flag是什么意思呢?看懂很多了,表示感谢。

flag是定义的一个变量名,用来存放结果0或非0的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-21 21:42:52 | 显示全部楼层
3231991562 发表于 2017-6-21 18:18
还没有那么高深,只知道一些简单的,,有没有更简单点的?

好像没有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-21 22:17:43 From FishC Mobile | 显示全部楼层
ba21 发表于 2017-6-21 20:15
flag就是一个标志 用来存放 0 或 非0 。0 不是素数, 1是素数;  这要看你的思路是怎么构思的。你也可以 ...

可是电脑要怎么识别这个是素数还是非素数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-22 00:07:36 | 显示全部楼层
3231991562 发表于 2017-6-21 22:17
可是电脑要怎么识别这个是素数还是非素数

我的天呐!
     一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做素数
假如有:1, 2, 3, 4, 5, 6, 7, 8, 9, 10;现在要算9是不是素数:
9 % 2 = 0; //取余数 = 0 ;就叫整除。 这里不能,继续
9 % 3 = 0;  // 这里 除以 3 能整除,说明不是素数。反则一路这样取余,直到 自身 为止
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-11 09:52:40 | 显示全部楼层
本帖最后由 当前时区00 于 2017-7-11 09:55 编辑


请问 函数里面 为什么是 i <= num / 2  判断素数 应该是 i<=num-1 么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-11 10:00:41 | 显示全部楼层
当前时区00 发表于 2017-7-11 09:52
请问 函数里面 为什么是 i

i<=num-1 也可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-11 10:18:02 | 显示全部楼层

谢谢 如果不用函数调用 可以完成这种批量的素数判断吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-11 10:36:47 | 显示全部楼层
当前时区00 发表于 2017-7-11 10:18
谢谢 如果不用函数调用 可以完成这种批量的素数判断吗

当然可以
#include <stdio.h>

int main(void)
{
        int flag;

        for(int i = 100; i <= 200; i++)
        {
                flag = 1;
                for(int j = 2; j <= i / 2; j++)
                {
                        if(i % j == 0)
                        {
                                flag = 0;
                                break;
                        }
                }
                
                if(flag == 1)
                        printf("%d ", i);
        }
        putchar('\n');

        return 0;
}
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
请按任意键继续. . .
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-11 10:50:14 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-12 07:19:38 From FishC Mobile | 显示全部楼层
#include <>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-12 07:26:33 From FishC Mobile | 显示全部楼层
#include <studio.h>
#include <math.c>
整形 i, n
当n从100到200时
当i从2到(int)sqrt(n)时
判断有无n%i==0
有则n为合数
无则n为素数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 22:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表