C++ 如何打印系列的第n个编号?

C++ 如何打印系列的第n个编号?,c++,c,C++,C,我正在尝试打印该系列的第n个编号 2,235235723571123571113 但是在n=3之后,我没有得到正确的输出 当n=3时,给出234,这是错误的 #include<stdio.h> #include<math.h> main() { unsigned int t, n, p, i, j, d; int s; scanf("%d", &t); if (t <= 10) { while (t

我正在尝试打印该系列的第n个编号

2,235235723571123571113

但是在n=3之后,我没有得到正确的输出

当n=3时,给出234,这是错误的

#include<stdio.h>
#include<math.h>

main()
{
    unsigned int t, n, p, i, j, d;
    int s;

    scanf("%d", &t);
    if (t <= 10)
    {
        while (t != 0)
        {
            scanf("%d", &n);
            p = n;
            j = 2;
            s = 0;
            while (p > 0)
            {
                d = prime(j);
                // printf("%d",d);
                if (d == 1)
                {
                    s = s + j * pow(10, p - 1);
                    p--;
                    j++;
                }
                else
                    j++;
            }
            printf("%d", s);
            t--;
        }

    }

}

int prime(int num)
{
    int i, flag = 1, n;

    // n=sqrt(num);
    for (i = 2; (i <= num / 2) && (flag == 1); i++)
    {
        if (num % i == 0)
            flag = 0;
    }
    if (flag == 0)
        return 0;
    else
        return 1;
}
#包括
#包括
main()
{
无符号整数t,n,p,i,j,d;
int-s;
scanf(“%d”、&t);
if(t0)
{
d=素数(j);
//printf(“%d”,d);
如果(d==1)
{
s=s+j*pow(10,p-1);
p--;
j++;
}
其他的
j++;
}
printf(“%d”,s);
t--;
}
}
}
整数素数(整数)
{
int i,flag=1,n;
//n=sqrt(num);

对于(i=2;(i在一些低质量的C实现中,
pow
函数不会返回正确的结果,即使数学结果可以用浮点格式精确表示。例如,
pow(10,2)
可能返回99.99999999999999985789145284797996282577514648375而不是100

将非整数的浮点值赋给integer对象时,该值将通过截断转换为整数。例如,234.9999847412109375将变为234


一般来说,整数运算应该避免使用浮点函数,例如
pow
。但是,对于知道
pow
的结果应该是整数的较小值,可以使用
round
round(pow(10,p-1))来更正结果

所以您正在生成素数并希望输出串联素数的字符串

编写一个用前n个素数填充数组的函数。这很简单。 然后编写一个输出函数,如:

for (i = 0; i < n; ++i) {
    for (j = 0; j <= i; ++j) {
        printf("%d", arr[j]);
    }
    printf("\n"); /* or any other separator */
}
(i=0;i{
对于(j=0;j,无需使用任何额外空间和内置函数

#include<stdio.h>
int isPrime(int p)
{
    int i;
    for(i=2;i*i<=p;i++)
    if(p%i==0)
    return 0;
    return 1;
}
int main()
{
    int n=10,count=0,p=2;
    while(count<n)
    {
        if(isPrime(p))
        {
            printf("%d",p);
            count++;
        }
        p++;
    }
}
#包括
int iPrime(INTP)
{
int i;

对于(i=2;i*i你想过整数溢出吗?试过切换到
long
?你考虑过使用调试器吗?继续!你会喜欢使用它的。是的,我做了long-long,但它在n=3本身给了我错误的答案。你为什么不直接打印前n个素数,它们之间没有空格?但是我需要打印数字,按照你的建议第n项不是数字,而是一系列数字为什么不需要填充数组?@user39555如果不是一系列数字,“235711”是什么?谢谢molbdnilo:-)“235711”只不过是一系列数字而已。但要回答你的问题:他似乎需要2,23235……所以他需要反复迭代素数数组。存储它们的成本比计算它们要低。