c++判定素数

来源:百度知道 编辑:UC知道 时间:2024/06/24 16:53:14
我刚学c++的循环语句,函数什么的还没学,有哪位高手可以用最显浅的方法教教我啊?题目:编写一个判别素数的程序,用信息提示输入一个整数,然后输出此整数是否为素数的信息。
#include "stdafx.h"
#include<iostream.h>
void main()
{
int a,b;
cin>>b;
for(a=2;a<=99;a++)
{if((b%a!=0)&&(b>a)) cout<<"yes";
else cout<<"no";break;}
这是我写的,可是不对。请指教指教。

基本思路是这样的:首先你要明白这个结论:一个数X如果不能被2到根号X的数字整除,那么它就是素数。

#include<iostream.h>
#include<math.h>
main()
{
int i,j,flag;//flag是个计数器,一旦扫描到i可以被j整除,则变为0;
cout<<"input anumber!"<<endl;
cin>>i;
{
flag=1;
for(j=2;j<=sqrt(i);j++) //sqrt(i)是求根号i
if(i%j==0)
{
flag=0;
break;
}
if(flag)
cout<<i<<"是素数!"<<endl;
}
}

你的问题在于break的位置有点问题,导致循环只进行一次就退出了。

你得到的将不是素数,只要遇到对所有的a取余不为零且b>a就输出b,而实际素数应是对所有的小于该数的整数取余都为非零。所以可如下:
#include<stdio.h>
#include<math.h>

void main()
{
int i, j, n, l, m = 0;
int sum=0;
printf("你需要小于多少的质数:\t");
scanf("%d", &n);

for(i = 0; i < n; i++)
{
l = 1;
for(j = 2; j <= sqrt((double)i); j++)
{
if(i % j == 0){l = 0; break;}
}