请问一下如何通过c++求一定区间内的梅森尼数个数?

大一新生,在求梅森尼数个数的时候卡住了,循环这一块自己学的不是特别好,能给点帮助吗

img

供参考:

#include <stdio.h>
#include <math.h>
double Isprime(double n);
int main()
{
    double mul=2;
    int n=21, cnt=0, r=2, i;
    //printf("Input n:\n");
    //scanf("%d", &n);
    for(i=2;i<=n;i++)
    {
        mul=mul * r;
        if(Isprime(mul-1))
        {
            cnt++;
            printf("2^%d-1=%.0lf\n", i, mul-1);
        }
    }
    printf("count=%d\n", cnt);
    return 0;
}

double Isprime(double n)
{
    double i;
    if(n <= 1)
        return 0;
    for(i=2;i <= sqrt(n);i++)
    {
        if(n/i==(int)(n/i))
            return 0;
    }
    return 1;
}