找素数
素数就是一个不能再进行等分的整数。比如:7,11。而9不是素数,以为它可以平分为3等分。
一般认为最小的是2,接着是3,5......
请,第100005(十万零二)个素数是多少?
请注意:“2”是第一个素数,“3”是第二个素数,以此类推。
参考代码如下:
#include<stdio.h>
#include<string.h>
//判断是否素数
int check(int n)
{
for(int i=2;i*i<=n;i++)
{
if(n%i==0)
{
return 0;
}
}
return 1;
}
int main()
{
int n = 1;
int i = 3;
while(n<100002)
{
if(check(i))
{
n++;
printf("第%d个素数是 : %d\n",n,i);
i++;
}
else
{
i++;
}
}
return 0;
}
执行结果如下:
其他语言代码如下:
public class searchPriem{
// 判断是否为素数
public static boolean check(int n){
for(int i=2;i*i<=n;i++){
if(n%i==0){
return 0;
}
}
return 1;
}
public static void main(String[] args) {
int n = 1;
int i = 3;
while(n<100002){
if(check(i)){
n++;
System.out.println(n+" : "+i);
i++;
}else{
i++;
}
}
}
}
其他大神的代码:
public class FourWeiPrime {
boolean isPrime(int n){
boolean flag = true;
for(int i = 2; i*i <= n; i++){
if(n % i == 0)
flag = false;
}
return flag;
}
boolean isInclude1949(int n){
boolean flag = false;
int y[] = {0,0,0,0};
int count = 0;
while(n != 0){
int r = n%10;
if(r == 1){
y[0] = 1;
}else if(r == 4){
y[1] = 1;
}else if(r == 9){
if(y[2] != 1){
y[2] = 1;
}else if(y[3] != 1){
y[3] = 1;
}
}
n /= 10;
}
for(int i = 0; i < 4; i++){
if(y[i] == 1){
count++;
}
}
if(count == 4){
flag = true;
}
return flag;
}
void prime(){
int init = 1000;
int max = 9999;
int ln = 0;
int count = 0;
for(int i = init; i < max; i++){
if(isPrime(i)){
if(isInclude1949(i)){
System.out.print(""+i+",");
count++;
}
}
}
System.out.println("四位素数有:"+count+"个");
}
}