花海(素数判断)

题目描述
小H有n粒鲜花的种子,他的目标是种出一片花海。这个花海的形状是矩形的。小H想让花海的行数和列数都是素数,他不知道手里的种子能有几种可行的方案(只有当两个方案的行数相同,列数也相同时,才视为同一个方案),你能帮帮他吗?注意,小H可以不用完所有种子, 也就是只要行数和列数都是素数,且乘积小于等于n即为可行的方案。
输入
一个整数n,代表鲜花种子数量(0<n<=10000)
输出
一个整数,代表满足小H要求的方案数量。
样例输入 Copy
7
样例输出 Copy
3

# include<stdio.h>
# include<math.h>
# pragma warning(disable : 4996) 
int sushu(int i);
int main(void)
{
    
    
    int n, con = 0, i, j;
    scanf("%d", &n);
    for (i =2 ; i <= n; i++)
    {
    
    
        for (j = 2; j <= n; j++)
        {
    
    
            if (i * j <= n && sushu(i) == 1 && sushu(j) == 1)
                con++;
        }
    }
    printf("%d\n", con);
}
int sushu(int i)
{
    
    
    int q,a;
    q = (int)sqrt(i);
    for (a = 2; a <= q; a++)
    {
    
    
        if (i % a == 0)
            break;
    }
    if (a <= q)//如果没有限制i的取值范围大于2;要将此句改写成if(a<=q||i==1)
        return 0;
    else
        return 1;
}

猜你喜欢

转载自blog.csdn.net/qq_45858803/article/details/109696621