鱼C论坛

 找回密码
 立即注册
查看: 12363|回复: 15

c语言2%2等于多少

[复制链接]
发表于 2012-4-24 14:18:35 | 显示全部楼层 |阅读模式

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

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

x
我写了一个:求前100个素数的一段代码:
怎么也想不通 2%2 不是等于0吗? 为什么还能当素数打印出来?求各位C达人告知!

int i,j,k=0,m;
for (i=2;i<=1000;i++)
{
  
  m=1;
  for (j=2;j<i;j++)
  {
   if (i%j==0)
   {
    m=0;
   
    break;
   }
  }
  if (m!=0)
  {
   printf("%d\n",i);
   k=k+1;
   if (k==10)
    break;

  }
  getchar();
  
}
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-4-24 15:00:50 | 显示全部楼层
还有这段代码
是你输入一个大于1的数,自动判断是不是质数的代码!
各位达人请帮我看看,我写的对不!
int i,m=1,n;
printf("请输入一个大于1的数将自动判断是不是质数\n");
scanf("%d",&n);

while (1)
{
  if (n<=1)
  {
  printf("你输入有误,请重新输入\n");
  scanf("%d",&n);
  }
  else   
  break;
}
                                   //判断你输入的数是不是小于等于1


  for (i=2;i<n;i++)
  {
   
   if (n%i==0)
   {
    m=0;
    break;       //如果能整除除了2和它本身说明不是质数,不是质数用m=0表示
   }else
   {
  
   
   m=1;
   continue;    //剩下的就是质数,用m=1表示
   }
  }
  if (m==1)
  {
  printf("你输入的%d是质数\n",n);
  }
  else
  printf("你输入的%d不是质数\n",n);
  
  getch();
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-24 15:39:13 | 显示全部楼层
#include<stdio.h>
void main()
{
        int i,j,k=0,m;
        for (i=2;i<=1000;i++)
        {
  
                m=1;
                for (j=2;j<i;j++)  //(j=2) (i=2)时不满足j<i直接就不会循环,我还想说2也是素数
                {
                        if (i%j==0)
                        {
                          m=0;                          
                          break;
                        }
                }
                if (m!=0)
                {
                  printf("%d\n",i);
                  k=k+1;
                  if (k==100)      //if (k==10)  //这句应该是只求前10个素数吧
                          break;          
                }
        }
        getchar();      //这句放这里
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-24 15:49:28 | 显示全部楼层

//楼主下次最好把所有的代码粘贴出来,包括头文件,宏定义等
#include <stdio.h>
void main()
{
        int i,m=1,n;
        printf("请输入一个大于1的数将自动判断是不是质数\n");
        scanf("%d",&n);

        while (1)
        {
                if (n<=1)
                {
                        printf("你输入有误,请重新输入\n");
                        scanf("%d",&n);
                }
                else   
                        break;
        }
        //判断你输入的数是不是小于等于1
        for (i=2;i<n;i++)
        {               
                if (n%i==0)
                {
                        m=0;
                        break;     
                }               
                          /*else    某次的n%i不为零并不能说明就是素数  如(n=15) % (i=14)=1那m=1。这就错了
                                {                        
                                        m=1;
                                        continue;    //剩下的就是质数,用m=1表示
                                }  */
        }

        if (m==1)
        {
                printf("你输入的%d是质数\n",n);
        }
        else
                printf("你输入的%d不是质数\n",n);
        getchar();                    //  getch();
}
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-4-24 19:33:07 | 显示全部楼层
hxs554f 发表于 2012-4-24 15:49
//楼主下次最好把所有的代码粘贴出来,包括头文件,宏定义等
#include
void main()

嗯,谢谢你啊!就是说我写的这个有问题!不能成立呗!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-25 13:17:06 | 显示全部楼层
质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。
所以2也是素数啊,当然会输出
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-25 14:52:37 | 显示全部楼层
本帖最后由 离尘※影 于 2012-4-25 14:57 编辑

c忘得差不多了,很多东西都跟自己想得不一样了……
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-26 11:14:02 | 显示全部楼层
%是不是取模符号啊?
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-4-26 16:06:04 | 显示全部楼层
爱.欣 发表于 2012-4-26 11:14
%是不是取模符号啊?

这位老师,你这个回答让我很是无语啊,你这重在参与的心情我了解!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-27 11:20:14 | 显示全部楼层
:$不好意思,数学类的我也是一头雾水,我初中数学都忘得差不多了。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-27 13:10:47 | 显示全部楼层
本帖最后由 小王子之歌 于 2012-4-27 13:15 编辑

话说,2就是素数啊,木神马不对...不过请允许俺直接吐槽,首先LZ的代码不符合题目要求...貌似是要求打印前100个素数,但LZ的代码明显是找出小于1000内的素数,但如何1000内没有100个素数呢?不就错了?其次,如果500左右就找到前100个素数了,那后面循环不就白浪费了?? 执行效率问题啊...
  1. #include<stdio.h>
  2. #include<math.h>

  3. int main(void)
  4. {
  5.         int num,      //自然数
  6.              i,
  7.              k,        //小于等于根号num的被除数
  8.              j = 1;    //计算器,<=100

  9.         printf("%6d", 2);

  10.         for(num = 3;;num += 2) //因为除2外,偶数必定不为质数,与num++比,循环次数少1倍
  11.         {
  12.                 k =  sqrt(num);
  13.                 for(i = 2; i <= k; i++)
  14.                 {

  15.                         if(!(num % i)) break;

  16.                 }
  17.                 if(i > k)
  18.                 {
  19.                         printf("%6d", num);
  20.                         j++;
  21.                         if(!(j % 10)) printf("\n");
  22.                 }
  23.                 if(100 == j) break;
  24.         }
  25.         return 0;
  26. }
复制代码
已测试通过...仅参考,呵呵
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-4-27 20:47:19 | 显示全部楼层
小王子之歌 发表于 2012-4-27 13:10
话说,2就是素数啊,木神马不对...不过请允许俺直接吐槽,首先LZ的代码不符合题目要求...貌似是要求打印前100个 ...

感谢小王子之歌,我会认真改正!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-27 20:47:50 | 显示全部楼层
sejung 发表于 2012-4-26 16:06
这位老师,你这个回答让我很是无语啊,你这重在参与的心情我了解!

取模和取余不同
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-4-27 20:49:49 | 显示全部楼层
越野e族 发表于 2012-4-27 20:47
取模和取余不同

嗯,感谢回复!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-27 21:32:27 | 显示全部楼层
2本来就是素数。。。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-28 09:13:50 | 显示全部楼层
取模不就是取余数吗?怎么不同啊...
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-2-14 02:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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