注册 登录
编程论坛 C++教室

这个小程序哪里错啦,求指导

简单快乐555 发布于 2014-05-08 21:17, 466 次点击
#include<iostream>
#include<cmath>
using namespace std;
main()
{
    int n,m,i;
    cout<<"请输入一个正整数"<<endl;
    cin>>n;
    m=sqrt(n);
  while(n!=1)
  {
for(i=2;i<=m;i++)
{
    if(n%i==0)
        cout<<"正整数"<<n<<"不是素数"<<endl;
    else
        cout<<"正整数"<<n<<"是素数"<<endl;
}
  }
}




5 回复
#2
zklhp2014-05-08 21:28
  while(n!=1)
  {
for(i=2;i<=m;i++)
{
    if(n%i==0)
        cout<<"正整数"<<n<<"不是素数"<<endl;
    else
        cout<<"正整数"<<n<<"是素数"<<endl;
}
  }
}

逻辑有问题 首先 这里的while()使得n不是1的时候死循环 再就是 判断一个数不能整除不能确定是素数
#3
zklhp2014-05-08 21:35
程序代码:

#include<iostream>
#include<cmath>
using std::cout;
using std::cin;
using std::endl;
int main(void)
{
    int n = 0,m = 0, i = 0;
    cout << "请输入一个正整数" << endl;
    cin >> n;
    if (n == 1)
    {
        cout << "1不是素数也不是合数" << endl;
        return 0;
    }
    m = sqrt(n);
    for (i = 2; i <= m; ++i)
    {
        if (n % i == 0)
        {
            cout << "正整数" << n << "不是素数" << endl;
            break;
        }
    }
    if (i > m)
    {
        cout << "正整数" << n << "是素数" << endl;
    }
    return 0;
}


大概是这个样子的。。
#4
kkkkaaa2014-05-08 23:00
上面分析的很对,在你的基础上稍微一改就行!
#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
main()
{
    int n,m,i;
    cout<<"请输入一个正整数"<<endl;
    cin>>n;
    m=sqrt(n);
  while(n!=1)
  {
for(i=2;i<=m;i++)
{
    if(n%i==0)
        cout<<"正整数"<<n<<"不是素数"<<endl;
    else
        cout<<"正整数"<<n<<"是素数"<<endl;
}
exit(0);
  }
  
}
#5
a3893503182014-05-09 22:32
回复 4 楼 kkkkaaa
大哥 你这程序一看就是错的  你别误导人家 好不好 !
#6
love31座森林2014-05-09 23:44
简单快乐555
while(n!=i)错了,可知输入的n不变。
可改为(个人意见)
#include<iostream>
#include<cmath>
using namespace std;
void main()
{
    int n,m,i;
    cout<<"请输入一个正整数"<<endl;
    cin>>n;
    for(i=2;i<n;i++)if(n%i==0)break;
    if(i<n)
    cout<<"正整数"<<n<<"不是素数"<<endl;
    else
        cout<<"正整数"<<n<<"是素数"<<endl;

}
1