在线等!!一个c++的基础问题。望大家帮帮忙。请按我的程序改正。

问题如下:编写自定义函数prime(intx),判断x是否为素数。利用此函数编写程序分别找出1-5000中满足下列条件的数x:(1)x是素数(2)x的各位数字及x本身都是... 问题如下:编写自定义函数prime(int x),判断x是否为素数。利用此函数编写程序分别找出1-5000中满足下列条件的数x:
(1)x是素数
(2)x的各位数字及x本身都是素数
(3)x是素数,从各位开始依次去掉一位数字后的数仍是素数。例如,233是素数,23和2也是素数,则233满足条件。
#include<stdio.h>
int prime(int x);
main()
{
int u;
int x,i;
int m,n,z;
int r,s,t,o,p;
int a,b,c,d,e,f,g;
int sum1,sum2,sum3,sum4;

for(i=1;i<=5000;i++){
if(i<10){
u=prime(i);
if(u>0)
printf("%3d",i);
else
printf("");
}
if(i>=10&&i<100){
m=prime(i);
n=prime((i/10));
z=prime((i%10));
sum1=m+n+z;
if(sum1==3)
printf("%3d",i);
else
printf("");
}
if(i>=100&&i<1000){
r=prime(i/1);
s=prime(i/10);
t=prime(i/100);
o=prime(i%10);
p=prime((i%100)/10);
sum2=r+s+t+o+p;
if(sum2==5)
printf("%3d",i);
else
printf("");
}
if(i>=1000&&i<=5000){
a=prime(i);
b=prime(i/10);
c=prime(i/100);
d=prime(i/1000);
e=prime(i%10);
f=prime((i%100)/10);
g=prime((i%1000)/100);
sum3=a+b+c+d+e+f+g;
if(sum3==7)
printf("%3d\n",i);
else
printf("");
}
}
}
int prime(int x)
{
int i;
int m=1,n=0;
for(i=2;i<=x;i++){
if(x%i==0)
break;
if(x==i)
return m;
else
return n;
}
}
展开
 我来答
jaybestwang
2011-12-13 · TA获得超过4106个赞
知道小有建树答主
回答量:940
采纳率:0%
帮助的人:710万
展开全部
一般来说,这种判断性质的函数返回值不是像你这么搞的,这样写
bool prime(int x)
{
if(x ==0 || x== 1) return false;
if(x==2) return true;
int i;
for(i=2;i<=x/2+1;i++){ //这里修改过了,仔细看看
if(x%i==0)
return false;
}
return true;
}
这样判断的时候可以这样
if(prime(x))
还有,这样把数都分区间表示太繁琐,程序太长
你要表示各个位的数就不停%10然后除以10就行了
main函数改成这样
int i;
for(i=2; i<=5000; i++){ // 1不用了,肯定不是质数
if(prime(i)){ // 前提:它本身是质数
int tmp = i;
while(tmp!=0 && prime(tmp%10) && prime(tmp)){ // 判断各个位的数以及依次去掉一位是否为质数
tmp /= 10;
}
if(tmp == 0){
cout<<i<<' ';
}
}
}
cout<<endl;
整个程序你看看

#include <iostream>
using namespace std;
bool prime(int x)
{
if(x ==0 || x== 1) return false;
if(x == 2) return true;
int i;
for(i=2;i<=x/2+1;i++){ //这里修改过了,仔细看看
if(x%i==0)
return false;
}
return true;
}

int main()
{
int i;
for(i=2; i<=5000; i++){ // 1不用了,肯定不是质数
if(prime(i)){ // 前提:它本身是质数
int tmp = i;
while(tmp!=0 && prime(tmp%10) && prime(tmp)){ // 判断各个位的数以及依次去掉一位是否为质数
tmp /= 10;
}
if(tmp == 0){
cout<<i<<' ';
}
}
}
cout<<endl;
return 0;
}
guochao1258
2011-12-13
知道答主
回答量:2
采纳率:0%
帮助的人:3333
展开全部
不知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式