一道需要强大算法支持的C语言题目(不是C++)

题目简述:如果正整数可以正好被四个不同的正整数整除,则该正整数被称为是四除数。例如,6是四除数,因为它可以并且只能被1,2,3,6除。8也是,能被1,2,4,8除给定一个正整数k,要求你找出第k个最小的4的除数输入要求:1.第一行输入一个数n,该数是将要输入的“k”(这个k是指题目简述里的k的y意思)的个数2.此后n行分别输入一个数分别代表一个“k”输出要求:对于每次输入的“k”,都需输出第“k”个“四除数”ps:n和k的数值都会非常大,范围大概是1<=k,n<=1000000(7位数,6个0)有点麻烦对于我来说,求各界大佬指点,谢谢(例子如下图)

#include<stdio.h>
#define LEN 1000000
int a[LEN+1];
int input[LEN + 1];
int main(void)
{
int x, cnt;
int n;
cnt = 0;  
scanf("%d", &n);//取总数
int maxk = -1;
for (int i = 0; i < n; i++)
{
scanf("%d", &x);
input[i] = x;
if (maxk < x)
maxk = x;
}
for (int i = 1; i <= LEN; i++)
{
int m = 0; 
for (int j = 1; j <= i; j++)
{
if (i%j == 0)
m++;
if (m > 4)
break;//提前跳出
}
if (m == 4)
{
a[cnt] = i;
cnt++;  
if (cnt > maxk)
break;
}
}
for (int i = 0; i < n;i++)
{
printf("%d\n", a[input[i]-1]);
}
return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答