如果一个正整数不能被大于1的完全平方数所整除,那么我们就将该数称为无平方数因数的数。例如,靠前的一些无平方数因数的数是{1,2,3,5,6,7,10,11,13,14,15,17,19…}。创建一个class SquareFree,其中包括一个函数getNumber,在给定一个int n后,该函数能够返回第n个最小无平方因数的数。请注意这里是从1开始的,那么如果n=1,该算法将会返回最小的无平方数因数的数。
n 的取值范围为1到1,000,000,000(其中包括1和1,000,000,000)
for (int i = 0; ; i++) {//死循环用于循环判断
Scanner in=new Scanner(System.in);
int sum=in.nextInt();
if(sum==0){//退出
break;
}
sum+=(int)Math.sqrt(sum)-1;//用输入的值去开平方得到的结果的整数就说明有多少个平方数,减1是排除1,
System.out.println(sum);
}
i从1到1,000,000,000,开始循环,循环体里检测i是否符合(符合条件是从1到sqr(i),不能被大于1的完全平方数所整除),符合条件count++,如果count==n,退出循环结束
#include<iostream>
using namespace std;
#define maxn 1000
int vis[maxn];
int main()
{
int n;
cin >> n;
int m = sqrt(n + 0.5);
for (int i = 2; i <= m; i++)//if (!vis[i])
{
for (int j = i*i; j <= n; j += i)vis[j] = 1;
}
for (int i = 1; i <= n; i++)
{
if (vis[i] == 0)cout << i << " ";
}
cout << endl;
return 0;
}