Babylanyon 2020-11-29 20:20 采纳率: 55.6%
浏览 237
已采纳

求解||打印出从1-n的所有素数?c语言?

原题是这样的

1)输入正整数n;

    2)判断1-n之间有多少个素数,并输出所有素数。

    3)每行输出10个素数,每个素数输出格式使用“%-5d”(宽度5位,数据左对齐);

    4)最后打印该区间共有多少个素数(“%d”)。

下面是我写的代码,请问哪里出问题了/?

#include<stdio.h>
#include<math.h>
int main ( )
{
    int a,n,i,k,m=0;
    scanf("%d",&a);
     for(n=1;n<=a;n+=2)
     {
         k=sqrt(n);
         for(i=2;i<=k;i++)
             if(n%i==0)break;
         if(i>=k+1)
         {
             printf("%-5d",n);
             m=m+1;
         }
         if(m%10==0)printf("\n");
     }
     printf("\n");
     printf("The total is %-5d\n",m);
     return 0;
}
  • 写回答

2条回答 默认 最新

  • qq_25376897 2020-11-30 10:50
    关注
    #include <stdio.h>
    
    int main ( )
    {
        int x,n,i=2,j,m=0;
        scanf("%d",&n);
        if(n<=1){ //1不是素数,也不是合数
            printf("The total is %-5d\n",m);
            return 0;
        }
        for(int i=2;i<=n;i++){
            x = i;
            //1、x是2(2是素数),x/2等于1,不会进入for循环,同时满足j*1.0>x*1.0/2
            //2、x是大于2的偶数(大于2的偶数都不是素数),必有x%2 == 0,j是2,不满足j*1.0>x*1.0/2
            //3、x是大于2的奇数,x/2必然是小数,如果x%j == 0,则j*1.0<x*1.0/2,不满足j*1.0>x*1.0/2;
            //如果x%j == 0都不成立,由于j是整数,且j*1.0 < x*1.0/2,i++导致最后会j*1.0>x*1.0/2,此时是素数
            for (j = 2;j*1.0 < x*1.0/2;j++){
                if(x%j == 0){
                    break;
                }
            }
            
            if(j*1.0>x*1.0/2){ //满足该条件的就是素数
                printf("%-5d",x);
                m++;
                if(m%10==0){
                    printf("\n");
                }
            }
        }
        if(m%10!=0){
            printf("\n");
        }
        
        printf("The total is %-5d\n",m);
        
        return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘