求素数,要求满足128bit的整数,但是7位整数就运行不了了,怎么解决

#include <iostream>
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
inline __int128 read()
{
    __int128 x = 0;
    __int128 f = 1;
    char ch = getchar();
    while (ch < '0' || ch > '9')
    {
        if (ch = '-')
        {
            f = -1;
        }
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9')
    {
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x * f;
}
inline void write(__int128 x)
{
    if (x < 0)
    {
        putchar('-');
        x = -x;
    }
    if (x > 9)
        write(x / 10);
    putchar(x % 10 + '0');
}
int main()
{
    __int128 a;
    a = read();
    __int128 nums[a + 1];
    __int128 i, j;
    __int128 count = 0;
    for (i = 2; i <= a; i++)
    {
        nums[i] = 1;
    }
    for (i = 2; i <= sqrt(a); i++)
    {
        if (nums[i] == 1)
        {
            for (j = 2 * i; j <= a; j++)
            {
                if (nums[j] == 0)
                    continue;
                if (!(j % i))
                {
                    nums[j] = 0;
                }
            }
        }
    }
    for (i = 2; i <= a; i++)
    {
        if (nums[i])
        {
            write(i);
            cout << "  ";
            count++;
            if (!(count % 20))
            {
                cout << endl;
            }
        }
    }
}

img