发布网友 发布时间:2022-04-20 15:42
共5个回答
热心网友 时间:2023-07-15 04:05
素数:
质数又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的。最小的质数是2。
基本判断思路:
在一般领域,对正整数n,如果用2到
之间的所有整数去除,均无法整除,则n为质数。
Python 代码:
def is_prime(n):
list_num = []
for i in range(2, n):
for num in range(2, int(sqrt(n))+1):
if i % num == 0 and i != num:
break
elif i % num != 0 and num == (int(sqrt(n))):
list_num.append(i)
return list_num
Java代码:
public static boolean isPrime(long n) {
if (n <= 3) {
return n > 1;
}
if (n % 2 == 0 || n % 3 == 0) {
return false;
}
for (int i = 5; i * i <= n; i += 6) {
if (n % i == 0 || n % (i + 2) == 0) {
return false;
}
}
return true;
}
Php代码:
function isPrime($n) {//TurkHackTeam AVP proction
if ($n <= 3) {
return $n > 1;
} else if ($n % 2 === 0 || $n % 3 === 0) {
return false;
} else {
for ($i = 5; $i * $i <= $n; $i += 6) {
if ($n % $i === 0 || $n % ($i + 2) === 0) {
return false;
}
}
return true;
}
}
C/C++代码:
bool isPrime(unsigned long n) {
if (n <= 3) {
return n > 1;
} else if (n % 2 == 0 || n % 3 == 0) {
return false;
} else {
for (unsigned short i = 5; i * i <= n; i += 6) {
if (n % i == 0 || n % (i + 2) == 0) {
return false;
}
}
return true;
}
}
热心网友 时间:2023-07-15 04:05
详细分析如下,不懂可以追问
这个地方的处理逻辑有问题,这里是判断flag等于1就打印i的值,可是你i的值用什么来保存?也就是说,根据上面的循环判断的时候,i会一直自增到b,那么如果b是素数的话,flag的值就为1,如果不是素数的话,flag的值等于0 了。所以说,你输入的b的值如果不是素数,程序根本就不会进下面的if一句了。
建议定义一个数组b,将当i为素数时的值保存到b数组中去,再定义一个变量count1将保存素数的个数,然后通过循环将素数打印出来,循环的条件是i<count1。这样就不会有问题了。
奥,对了,还有一个问题,你那个第二层循环为什么是n<i/2? 这样会有一个问题,假设到i=10时,你这里只能判断i不能被小于的数整除,不能保持i十分能被6整除呢?
if (flag==1){
printf("(%d)",i);
count++;
if (count%5==0);
printf("\n");
return 0;
}
热心网友 时间:2023-07-15 04:06
#include<stdio.h>
#include<math.h>
int main()
{ // <-- { 前移至此
int newfunction(); // <-- 末尾加个分号
int x,i;
double k;
scanf("%d",&x);
k=sqrt(x);
for(i=2;i<=k;i++)
if(x%i==0) break;
if(i>k)
printf("%d 是素数\n",x);
else
printf("%d 不是素数\n",x);
return 1;
}
int newfunction()
{
int a;
printf("input a number");
scanf("%d",&a);
newfunction(a);
}
热心网友 时间:2023-07-15 04:06
#include<stdio.h>
#include<math.h>
int newfunction2(int x);//用来判断的函数
int newfunction();//用来输入的函数
int
main ()
{
newfunction ();//调用了输入函数
return 0;
}
int
newfunction ()
{
int a;
printf ("input a number\n");
scanf ("%d", &a);
return newfunction2(a);//调用了判断函数
}
int
newfunction2 (int x)
{
int i, k;
k = sqrt (x);
for (i = 2; i <= k; i++)
if (x % i == 0)
break;
if (i > k)
printf ("%d 是素数\n", x);
else
printf ("%d 不是素数\n", x);
return 1;
}
热心网友 时间:2023-07-15 04:07
是否想在newfunction中判断是否素数?
下面是代码:
#include<stdio.h>