用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;
}

...要求输入素数时显示出“此数是素数”,输入合数时给出该合数的分解...
cout<<"请输入一个数字n:";cin>>n;if(prime(n))cout<<"此数为素数。"<<endl;else {cout<<"此数为合数:"<<"n=";fun(n);cout<<endl;} }

用C++编写函数判别一个数是否是质数,在主程序中实现输入输出
\/\/参考代码如下:#include "iostream"#include "stdio.h" using namespace std; int fun(int n){\/\/判断函数,是质数返回1,否则返回0 int ans =1;for(int i=2;i<n;i++)\/\/从2到n-1判断能否整除n if(n%i==0){ans=0;break;}return ans; }int main(){int n;cin>>n;\/\/输入n ...

如何用c语言判断一个数是不是素数
首先要知道素数是不等于1,它的因子只有1和它本身。判断一个数是否为素数,可以用大于1小于给定数的所有数去除给定数,如果有任何一个能够除尽,就表示是合数,反之是素数。下面是具体如何用C语言判断素数的过程:1、打开visual C++ 6.0,点击【文件】-【新建】-【文件】,然后选择【C++ Source File...

输入要给正整数,输出这个数是素数还是合数 用while循环语句完成?_百度...
cout << "请输入一个正整数:";cin >> n;while (i <= n \/ 2) { \/\/ 循环遍历从 2 到 n \/ 2 的所有数字 if (n % i == 0) { \/\/ 判断 n 能否被 i 整除 isPrime = false; \/\/ 如果能,那么 n 不是素数 break; \/\/ 直接跳出循环 } i++; \/\/ i 自增,继续判断下一个数...

c++判断一个数是否为素数?
看它们是否可以整除num。如果可以整除,说明输入的数不是素数;反之,说明输入的数是素数。测试的数值需要界于2到num的平方根之间的所有数,看它们是否可以整除num。如果可以整除,说明输入的数不是素数;反之,说明输入的数是素数。素数的特点 质数又称素数。指整数在一个大于1的自然数中,除了1和此...

用C语言如何判断素数
按照如下步骤即可用C语言判断素数:1、首先打开visual C++ 6.0,然后点击左上角的文件,再点击新建。2、然后在弹出的新建对话框中点击C++Source File。3、在新建的文件文本框中输入预处理命令和主函数,即函数头和空类型。4、然后再定义变量并输入一个数字,即定义变量的数据类型,输出文字提示,再输入...

c++判断素数
include <iostream> include <stdlib.h> using namespace std;int main(){long long a,b;cout<<"请输入一个数:\\n";cin>>a;if(a<=1){ cout<<"不是素数"<<endl;} else { for(b=2;b<a;b++){if(a%b==0){cout<<"不是素数"<<endl;break;} else continue;cout<<"是素数"<<...

编写一个程序,输出1~1000之内所有的素数(注意:素数即质数)及个数(C语 ...
刚好在做C++,顺便帮你做下,望采纳!#include <stdio.h>main(){int a,i,sum=0;printf("素数:\\n");for (a=1;a<=1000;a++){for (i=2;i<=(a-1);i++)if (a%i==0)break;if (i>=a){sum++;printf("%d\\n",a);}}printf("\\n素数的个数:%d\\n",sum);} 本回答由提问者推荐 举报| 答...

C语言编程判断m是否为素数
printf("输入一个数:"); \/*输出文字提示*\/ scanf("%d",&m); \/*输入一个数字*\/ 4、随后需要使用for函数和if函数判断是否是素数,具体程序如下:for(i=2;i<=m;i++) \/*用for函数重复下面步骤*\/ if(m%i==0) \/*判断输入的数是否能被除1和本身以外的数整除*\/ break;if(...

求C语言中 判断素数的 代码!!!
可用以下程序段实现:void main(){ int m,i,k;printf("please input a number:\\n");scanf("%d",&m);k=sqrt(m);for(i=2;i<k;i++)if(m%i==0) break;if(i>=k)printf("该数是素数");else printf("该数不是素数");} 将其写成一函数,若为素数返回1,不是则返回0 int prime(...

相似回答