鱼C论坛

 找回密码
 立即注册
查看: 2088|回复: 7

关于素数

[复制链接]
发表于 2020-1-27 14:55:08 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
int main()
{
        int n,i=2;
       
        for(n=i;n<=100;n++)
        for(;i<=10;i++)
        if((n%i)!=0)
{
printf("%d  ",n);


return 0;

}
结果:2 2 2 2 2 2 2.
题目要求:输出100以内的所有素数
求问问题在哪儿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-27 15:01:51 | 显示全部楼层
#include <stdio.h>
int main()
{
    int n, i = 2, flag;

    for (n = 2; n <= 100; n++)
    {
        flag = 1;
        for (; i <= (n / 2); i++)
        {
            if ((n % i) == 0)
            {
                flag = 0;
            }
        }
        if (flag)
            printf("%d ", n);
        i = 2;
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-1 18:26:42 | 显示全部楼层
不是很理解你这些代码的意思...
而且有两个"{"
却只有一个"}"居然不会报错的嘛?
感觉你的整体思路都很乱....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-2 20:08:25 | 显示全部楼层
#include<stdio.h>
int main()
{
        int n,i;
        for(n=2;n<=100;n++)
                {
                        for(i=2;i<n;i++)
                        {
                                if(n%i==0)
                                        break;
                        }
                        if(n==i)
                                printf("%d  ",n);
                }
                return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-2 20:21:06 | 显示全部楼层
#include<stdio.h>
int main()
{
        int n,i=2;
        
        for(n=i;n<=100;n++)
                        for(;i<=10;i++)
                                if((n%i)!=0)
                                        printf("%d  ",n);
                return 0;
}

你这个i相当于第二个for语句i的全局变量
所以当n=2是 里面的for执行9次,1次判断为0,8次为1,所以输出有八个2,这时候i已经等于11,i=11;
所以当n=3~100时 ,i一直比n大,判断一直为0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-4 13:44:22 | 显示全部楼层
1、先解释一下什么是素数(质数):只能被1和自己本身整除的数是素数。
例如:3、7、11、13........
还有素数不可能偶数。
#include <stdio.h>
#include <math.h>
int main()
{
        int n,k,i,m=0;
        for(n=1;n<101;n+=2)//n每次自增2是确保判断的数位奇数
        {
                k=sqrt(n);//开平方的话就可以大大减少循环次数,因为1个数可以被两个数相乘
                for(i=2;i<=k;i++)
                {
                        if(n%i==0)//判断n是否为素数
                        break;
                }
                if(i>=k+1)
                printf("%d,",n);
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 11:47:30 From FishC Mobile | 显示全部楼层
这涉及到充分条件和必要条件。比如说。100能被五整除,所以它一定不是素数。100不能被三整除。但他不一定是素数。只有当一个数不能被大于1,且小于它本身的所有数整除时,它才是素数,重点是所有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 11:50:37 From FishC Mobile | 显示全部楼层
你的代码还有一个问题,就算一个数是素数,你也不需要重复打印。在打印后应该使用break跳出循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 05:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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