==不是=号
if判断的时候是用if(isprime==1)
#include<math.h>
#include <cstdio>
int main()
{
int n, i;
int isPrime = 0;
scanf("%d", &n);
for(i = 2; i <= sqrt(n); ++i)
{
if(n % i == 0)
{
isPrime = 0;
break;
}
}
if (isPrime==1)
printf("是");
else
printf("不是素数");
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int n, i;
bool isPrime = true;
cout << "输入一个正整数: ";
cin >> n;
for(i = 2; i <= n / 2; ++i)
{
if(n % i == 0)
{
isPrime = false;
break;
}
}
if (isPrime)
cout << "是素数";
else
cout << "不是素数";
return 0;
}
这个例子看看吧
1.可以优化一下时间复杂度(小白也要有这种习惯,我也有):楼上那个时间复杂度还是高,因为他每次循环都要计算开平方sqrt(),但是你可以先计算sqrt()复制给n,如下:
n=sqrt(n);
for(i=2;i<=n;i++){
}
或者每次 i 乘一下自己,也可以做到sqrt的作用,而且这样时间复杂度比sqrt要低,如下:
for(i=2;i*i<=n;i++){
}
2.下面那个判断isPrime是否为1,应该不是=,因为=是赋值的意思,当你的isPrime成为1时,计算机会将这个isPrime不为0(已经赋值为1)自动进入“是素数”这个判断中,不会进入“不是素数“这个判断,所以你要将if判断里的“isPrime=1”改为“isPrime==1”就可以了,同样也可以改为“isPrime”,原因是因为计算机会将原本不为0的变量进入if判断中,所以如下:
if (isPrime)
printf("是");
else
printf("不是素数");
就可以了
求采纳