输出50个素数

1.我最初的写法:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main()
{
    int i, j, k = 0;
    int Temp = 1;
    for (i = 2; k < 50; i++)//从2开始寻找素数,直到素数数量为50
    {
        for (j = 2; j <= sqrt(i); j++)//遍历2~根号i
        {
            if (i % j == 0)//如果找到一个数除i余数为零,说明i有除1和本身以外的因数,i不是素数
            {
                Temp = 0;
                break;//记得退出循环,节约时间
            }
        }
        //如果从2~根号i都没有找到一个因数,则i为素数
        
        if (Temp == 1)
        {
            printf("%d\t", i);//打印i
            k++;//素数数量+1
        }
        if (k % 10 == 0)
            printf("\n");

    }
    return 0;
}

 然而这样写会出现问题-程序卡死

询问学姐后发现,出现卡住的原因是Temp变量没有在每一轮循环中重新初始化为1

2.第一次修改

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main()
{
    int i, j, k = 0;
    for (i = 2; k < 50; i++)//从2开始寻找素数,直到素数数量为50
    {
        int Temp = 1;//默认为素数
        //这一步初始化的位置很关键 必须让每一轮Temp重新初始化 不然程序会卡死
        for (j = 2; j <= sqrt(i); j++)//遍历2~根号i
        {
            if (i % j == 0)//如果找到一个数除i余数为零,说明i有除1和本身以外的因数,i不是素数
            {
                Temp = 0;
                break;//记得退出循环,节约时间
            }
        }
        //如果从2~根号i都没有找到一个因数,则i为素数
        
        if (Temp == 1)
        {
            printf("%d\t", i);//打印i
            k++;//素数数量+1
        }
        if (k % 10 == 0)
            printf("\n");

    }
    return 0;
}

然而又出现了问题-输出格式有误

明显发现输出后每一行之间存在宽度不一的空格,这是为什么?

上网查阅后发现了原因​​​​​​ c语言 为啥中间会出现一大片空白啊_其他-CSDN问答icon-default.png?t=N7T8https://ask.csdn.net/questions/7410946

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值