用C++编写一个判断素数合数的程序,要求输入素数时显示出“此数是素数”,输入合数时给出该合数的分解式

此程序输出不要printf模式,要用cout模式
运行结果要写入文本abc.txt怎么办,回答出来追加分

#include<iostream.h>

bool prime(int n)//判断是否为素数

{

 int i;bool flag=true;

 for(i=2;i<=n/2;i++)

  if(n%i==0)flag=false;

 if(flag==true||n==2)return 1;//是的话返回 true

 return 0;//否则 flase

}

int fun(int n)//将合数分解,这里用了函数的递归调用

{

 int i;

 if(prime(n))

 {cout<<n;return 0;}

 for(i=2;i<n;i++)

 {

  if(n%i==0&&prime(i))

  cout<<i<<'*';

  else continue;

  break;

 }

   fun(n/i);

}

void main()

{

 int n;

 cout<<"请输入一个数字n:";

 cin>>n;

 if(prime(n))cout<<"此数为素数。"<<endl;

 else {cout<<"此数为合数:"<<"n=";fun(n);cout<<endl;}

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-21
题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。

#include <iostream>
#include <cmath>
using namespace std;
//素数英文:prime numbers(质数)
bool IsPrimeNum(int num) //函数判断一个数是否是素数 是则返回1否则返回0
{
if(num==1) return 0; //1是合数 特列应注意写出
else
{
bool flag=1;
for(int i=2;i<=(int)sqrt(num);i=i+1)
{
if(!(num%i)) //如果有一个能整除就直接跳出循环 不是素数 注意:这里不能写成if(!num%i) 否则出错!优先级问题!哎得注意啊!
}
return flag;
}
}

int main()
{
int count=0;
for(int num=101;num<=200;num++) //要判断的数的范围是101到200
{
if(IsPrimeNum(num))
}

//for(int i=1;i<100;i++)
//cout<<i<<"是不是素数:"<<IsPrimeNum(i)<<endl; //测试用
return 0;
}
上面的程序是我以前编的,跟你要求一样,就是求素数嘛,最上面写有如何求素数你方法,你可以看看。
第二个程序我跟楼下写的差不多,只是他用的是个系统的函数直接转换,我是自己用asc转换的,但我不知道为什么我运行却不是以*输入自动结束(楼下的程序我运行也一样,*不能结束),不知道什么原因。我记得以前就是while(c!='*') 这样写的,不过我运行即使不行,没弄懂,哎。
第2个回答  2011-01-21
#include <iostream>
#include <fstream>
using namespace std;
int child(int n) //如果是素数则返回原数n,否则返回一个因子
{
if (n <= 2)return n;
for (int i = 2; i < n/2; i ++)
if (n%i == 0)return i;
return n;
}
int main()
{
int n;
cin>>n;
if (n<=0){cout<<"Please input positive integer\n";return 0;}
ofstream fout("abc.txt");
if (child(n) == n){cout<<"此数是素数\n";fout<<"此数是素数\n";}
else
for (;;)
{
int factor = child(n);
cout<<factor<<" ";
fout<<factor<<" ";
n /= factor;
if (n == 1)break;
}
return 0;
}本回答被提问者采纳
第3个回答  2011-01-20
#include <iostream>
#include <cmath>
using namespace std;
bool isprime(int a)
{
if (a < 2)
return false;
int b = sqrt(a*1.0);
for (int i = 2 ; i <= b ; ++i)
{
if (a%i == 0)
{
return false;
}
}
return true;
}
int main()
{
int a;
while(cin>>a)
{
if (isprime(a))
cout << a << "是素数" <<endl;
else
cout << a << "不是素数" << endl;
}
return 0;
}
相似回答