| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 910 人关注过本帖
标题:本人编写的打印质数的程序,请多指教!
取消只看楼主 加入收藏
PALDOS
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2023-2-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
本人编写的打印质数的程序,请多指教!
   
#include<stdio.h>
#include<math.h>
void main()
{
    int siz,i,flage;
    unsigned long int var=0,ifzs=3,mul=2;
    siz=sizeof(unsigned long int);
    printf("unsigned width is %d\n",siz);
    i=siz*8;
    printf("i=%d\n",i);
/*    do
    {
        if(i>1)
            
            printf("%lu:",var);
        else

            printf("%lu:",var-1);
        printf("%d\t",i);
        var*=2;
        --i;
   
    }while(i>0);
*/
    printf("\n2^64=%lu\n",var-1);

    do
            {
        mul=2;
        flage=1;   
   
        do{
              if(ifzs%mul==0)
              { flage=0;
                  break;}
              else
              { ++mul;}
        }while(mul<=sqrt(ifzs));
        if(flage)
        {printf("%lu\t",ifzs);
                ++ifzs;}
        else
        {    ++ifzs;
        }
        }while(ifzs<100000);
            printf("\n");
            }


搜索更多相关主题的帖子: int 编写 printf mul var 
2023-02-24 16:22
PALDOS
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2023-2-24
收藏
得分:0 
回复 3楼 rjsp
首先感谢版主的耐心指导,令本人不甚至荣幸。关于printf("\n2^64=%lu\n",var-1); ------ 这我就完全看不懂了,2^64 应该是 18446744073709551616,怎么可能是 0ul - 1 ?
因为无符号长整型变量的数值范围为:0——2^64-1,所以当计算2^64的时候,变量var为变成0,只好用0-1来表示了(这可能涉及到补码)。上面部分的代码确实有问题,更正如下:


#include<stdio.h>
#include<math.h>
void main()
{
    int i;
    size_t siz;
    unsigned long int var=2;
    siz=sizeof(unsigned long int);
    printf("unsigned width is %d\n",siz);
    i=siz*8; /*计算无符号长整型变量所占用的位数,如为4Byte,则字节数为4*8=32Bits。
    printf("i=%d\n",i);
    do
    {
        if(i>1)
            
            printf("%lu:",var);
        else

            printf("%lu:",0-1);
        printf("%d\t",i);
        var*=2;
        --i;
   
    }while(i>0);

    printf("\n2^64=%lu\n",0-1);

            }


[此贴子已经被作者于2023-2-26 09:13编辑过]

2023-02-26 08:56
PALDOS
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2023-2-24
收藏
得分:0 
回复 4楼 forever74
感谢鼓励和指点!
2023-02-26 09:08
PALDOS
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2023-2-24
收藏
得分:0 
又修改了一下,这样显示的结果格式似乎更好看一些:(以下代码在DEV-C++5.11下编译通过)
#include<stdio.h>
#include<math.h>
void main()
{
    int i,flage=1;
    size_t siz;
    unsigned long int var=2;
    siz=sizeof(unsigned long int);
    printf("unsigned width is %d\n",siz);
    i=siz*8;
    printf("siz width is %d\n",i);
    do
    {
        if(flage>(i-1))
            
            printf("2^%d=%lu\t",flage,var-1);
        else

            {printf("2^%d=%lu\t",flage,var);}
        var*=2;
        ++flage;
   
    }while(flage<=i);

    printf("\n2^32=%lu\n",var-1);


}


[此贴子已经被作者于2023-2-26 09:37编辑过]

2023-02-26 09:35
PALDOS
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2023-2-24
收藏
得分:0 
#include<stdio.h>
#include<math.h>
void main()
{
    int flage;
    unsigned long int ifzs=2,mul=2;
    printf("%-10lu",ifzs);
    do
           {
          mul=2;
          flage=1;   
   
        do{
              if(ifzs%mul==0)
                   {
                flage=0;
                    break;
               }
              else
                   ++mul;
          } while(mul<=sqrt(ifzs));
        
        if(flage)
            {
             printf("%-10lu",ifzs);
                 ++ifzs;
                }
        else
            {   
                ++ifzs;
            }
        }while(ifzs<10000000);
            printf("\n");
            
   }




[此贴子已经被作者于2023-3-1 08:10编辑过]

2023-03-01 00:26
快速回复:本人编写的打印质数的程序,请多指教!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015952 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved