int value =12312; int len = value/2; bool aa=false; for(int i=2;i <len;i++){ if(value%i==0){ aa=true; } } if(aa) Console.WriteLine("合数") else Console.WriteLine("质数");
这个,但是不能全部查出来 、、、例如13不行,但只要满足(((2 ^ (a - 1) - 1) % a) == 0)的就是质数。 int a = 3; if (((2 ^ (a - 1) - 1) % a) == 0) { MessageBox.Show("true"); } else MessageBox.Show("Hello");
public bool IsPrimeNumber(long value) { if (value == 2) { return true; } for (long i = 2; i <= Math.Ceiling(Math.Sqrt(value)); i++) { if ((value % i) == 0) { return false; } } return true; }
public bool IsPrimeNumber(long value) { if (value == 2) { return true; } for (long i = 2; i <= Math.Ceiling(Math.Sqrt(value)); i++) { if ((value % i) == 0) { return false; } } return true; } 先判断n是不是偶数, 然后i=2改成从3开始i++改成:i+=2效率会更好哈
哪里看来的?没有任何根据,我试了几组数据,都是返回true,无论是否互质。
import java.util.*; public class zhishu { public static void main(String[] args) { Scanner input = new Scanner(System.in); String answer = ""; do { int count = 0; System.out.println("请输入您要判断的数:"); int num = input.nextInt(); for (int i = 1; i <= num; i++) { if (num % i == 0) { count++; } } if (count == 2) { System.out.print("这个数是质数"); }else if(count == 1) { System.out.print("这个数既不是质数也不是合数"); } else { System.out.print("这个数是合数"); } System.out.println("\n\n继续吗 (y/n)?"); answer = input.next(); } while (answer.equals("y")); System.out.println("程序结束!"); } }
int len = value/2;
bool aa=false;
for(int i=2;i <len;i++){
if(value%i==0){
aa=true;
}
}
if(aa)
Console.WriteLine("合数")
else
Console.WriteLine("质数");
{
if(value==2)
return true; for(int i=2; i<value; i++)
{
if(value%i == 0)
return true;
} return false;
}
{
if(value==2)
return true; for(int i=2; i<value; i++)
{
if(value%i == 0)
return false;
} return true;
}
if (((2 ^ (a - 1) - 1) % a) == 0)
{
MessageBox.Show("true");
}
else MessageBox.Show("Hello");
{
if (value == 2)
{
return true;
} for (long i = 2; i <= Math.Ceiling(Math.Sqrt(value)); i++)
{
if ((value % i) == 0)
{
return false;
}
} return true;
}
{
if (value == 2)
{
return true;
} for (long i = 2; i <= Math.Ceiling(Math.Sqrt(value)); i++)
{
if ((value % i) == 0)
{
return false;
}
} return true;
}
先判断n是不是偶数,
然后i=2改成从3开始i++改成:i+=2效率会更好哈
哪里看来的?没有任何根据,我试了几组数据,都是返回true,无论是否互质。
import java.util.*; public class zhishu { public static void main(String[] args) { Scanner input = new Scanner(System.in); String answer = ""; do { int count = 0; System.out.println("请输入您要判断的数:"); int num = input.nextInt(); for (int i = 1; i <= num; i++) { if (num % i == 0) { count++; } } if (count == 2) { System.out.print("这个数是质数"); }else if(count == 1) { System.out.print("这个数既不是质数也不是合数"); } else { System.out.print("这个数是合数"); } System.out.println("\n\n继续吗 (y/n)?"); answer = input.next(); } while (answer.equals("y")); System.out.println("程序结束!"); } }
不能被n^(1/2)+1以前的所有的质数整除的数就是质数
但问题是怎么得出这样的东西:
a.
n1=2
n2=3
n3=5
n4=7
n5=11
n6=13
nm=m表达式
{
int start = 2, limit = N/2;
bool isprime = true;
while (start < limit)
{
if (N % start == 0)
{
isprime = false;
break;
}
else
{
start++;
limit = N / start;
}
}
Console.WriteLine(isprime);
}
基本原理是,一个非素数,至少应该拆分成两个数的乘积,那么我们只要找下是否存在这么两个数就够了,如果那个数是10000,极限就是100×100,也就是遍历100次,还是很快的,但要是换作二分法,你可是要遍历5000次,差距多大可想而知了吧。
public bool IsZhiShu(int value)
{
if(value==2)
return true; for(int i=2; i<int.parse(Math.Sqrt(value)); i++)
{
if(value%i == 0)
return false;
} return true;
}
楼主又在造轮子
不能被n^(1/2)+1以前的所有的质数整除的数就是质数
这句话是数论里的一个推论,不过原话不是这个说的,意思一样。
楼主,造轮子之前先看看书吧对于nm=m表达式
这个全世界人都在寻找,楼主找到了,就可以获得菲尔兹奖了