您的位置:首页 > 其它

是否素数

2016-03-02 20:14 381 查看
素数:质数(prime number)又称素数,除了1和它本身以外不再有其他的因数。

1)判断一个大于2的正整数是否是素数

int main()
{
int num;
printf("请输入一个大于2的正整数:");
scanf("%d",&num);
int count = 0;
for(int i = 2;i < num;i++)//i<num/2
{
if(num % i == 0)
{
count++;
}
}
if(count == 0)
{
printf("%d是素数.\n",num);
}
else printf("%d不是素数.\n",num);
system("pause");
return 0;
}

输出结果:



2) 请输出3-100之间的素数

第一种:遍历2-num之间的所有数

int main()
{
int primer[50];
int k = 0;
for(int i = 3;i <= 100;i++)
{
int count = 0;
for(int j = 2;j < i;j++)
{
if(i%j == 0)
{
count++;//如果不是素数,遍历的次数过多
continue;
}
}
if(count == 0)//没有能被整除的数
{
primer[k++] = i;
}
}
printf("3-100之间的素数有:\n");
for(int i = 0;i < k;i++)
{
printf("%d\t",primer[i]);
if((i+1)%6 == 0)
printf("\n");
}
system("pause");
return 0;
}

输出结果如下:



第二种:遇到能被整除的数,直接跳出循环。

int main()
{
int primer[50];
int k = 0,j;
for(int i = 3;i <= 100;i++)
{
for(j = 2;j <= i;j++)
{
if(i%j == 0)
{
break;//跳出里面的那个for循环
}
}
if(j==i)
{
primer[k++] = i;
}
}
printf("3-100之间的素数有:\n");
for(int i = 0;i < k;i++)
{
printf("%d\t",primer[i]);
if((i+1)%6 == 0)
printf("\n");
}
system("pause");
return 0;
}

输出结果和上面的相同,但是循环次数明显减少,减小了算法复杂度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  prime