c语言求绝对素数
答案:2 悬赏:70 手机版
解决时间 2021-11-29 02:21
- 提问者网友:且恨且铭记
- 2021-11-28 04:56
c语言求绝对素数
最佳答案
- 五星知识达人网友:渡鹤影
- 2021-11-28 05:09
#include
int counter = 0;
int prime(int k)
{
//int i,l=0,a,flag,t,counter=0; <--这样改试试,把counter定义加到#include下面
int i,l=0,a,flag,t;
flag=0;//定义为素数
t=k;
for(i=2;i<=(k+1)/2;i++)
{
if(k%i==0)
flag=1;//定义为非素数
}
do{a=k%10;
k=k/10;
l=10*l+a;
}while(k!=0);
for(i=2;i<=(l+1)/2;i++)
{
if(l%i==0)
flag=1;//定义为非素数
}
if(flag==0)
{
printf("%d ",t);
counter++;//记录输出数的个数
if(counter%5==0)
{
printf("
"); //每输出5个数则换行
}
}
return 0;
}
void main()
{
int m,n,k;
printf("输入m(m>=2)和n(n<=1000)的范围:");//定义主族函数中表示范围的量m,n
scanf("%d %d",&m,&n);
printf("m与n之间的绝对素数有:
");
for(k=m;k<=n;k++)
{
prime(k);
}
printf("
");
}追问成功了,灰常感谢,那么要求求这些数的和怎么处理?追答不好意思,有点别的事,担误,修改的代码如下,看看是不是和你改的一样?
#include
int counter = 0;
int prime(int k)
{
int i,l=0,a,flag,t;
flag=0;//定义为素数
t=k;
for(i=2;i<=(k+1)/2;i++)
{
if(k%i==0)
flag=1;//定义为非素数
}
do{a=k%10;
k=k/10;
l=10*l+a;
}while(k!=0);
for(i=2;i<=(l+1)/2;i++)
{
if(l%i==0)
flag=1;//定义为非素数
}
if(flag==0)
{
printf("%d ",t);
counter++;//记录输出数的个数
if(counter%5==0)
{
printf("
"); //每输出5个数则换行
}
}
return flag; // <---这里改成返回flag
}
void main()
{
int m,n,k,tol = 0; // <--这里加个变量tol,保存它们的和
printf("输入m(m>=2)和n(n<=1000)的范围:");//定义主族函数中表示范围的量m,n
scanf("%d %d",&m,&n);
printf("m与n之间的绝对素数有:
");
for(k=m;k<=n;k++)
{
//prime(k); // <--这里改成判断返回值,是0就是素数,这是你代码定义的。是素数就相加.
if(0 == prime(k))tol += k;
}
printf("
它们的和是:%d
", tol); // <---加个打印输出吧
}
int counter = 0;
int prime(int k)
{
//int i,l=0,a,flag,t,counter=0; <--这样改试试,把counter定义加到#include下面
int i,l=0,a,flag,t;
flag=0;//定义为素数
t=k;
for(i=2;i<=(k+1)/2;i++)
{
if(k%i==0)
flag=1;//定义为非素数
}
do{a=k%10;
k=k/10;
l=10*l+a;
}while(k!=0);
for(i=2;i<=(l+1)/2;i++)
{
if(l%i==0)
flag=1;//定义为非素数
}
if(flag==0)
{
printf("%d ",t);
counter++;//记录输出数的个数
if(counter%5==0)
{
printf("
"); //每输出5个数则换行
}
}
return 0;
}
void main()
{
int m,n,k;
printf("输入m(m>=2)和n(n<=1000)的范围:");//定义主族函数中表示范围的量m,n
scanf("%d %d",&m,&n);
printf("m与n之间的绝对素数有:
");
for(k=m;k<=n;k++)
{
prime(k);
}
printf("
");
}追问成功了,灰常感谢,那么要求求这些数的和怎么处理?追答不好意思,有点别的事,担误,修改的代码如下,看看是不是和你改的一样?
#include
int counter = 0;
int prime(int k)
{
int i,l=0,a,flag,t;
flag=0;//定义为素数
t=k;
for(i=2;i<=(k+1)/2;i++)
{
if(k%i==0)
flag=1;//定义为非素数
}
do{a=k%10;
k=k/10;
l=10*l+a;
}while(k!=0);
for(i=2;i<=(l+1)/2;i++)
{
if(l%i==0)
flag=1;//定义为非素数
}
if(flag==0)
{
printf("%d ",t);
counter++;//记录输出数的个数
if(counter%5==0)
{
printf("
"); //每输出5个数则换行
}
}
return flag; // <---这里改成返回flag
}
void main()
{
int m,n,k,tol = 0; // <--这里加个变量tol,保存它们的和
printf("输入m(m>=2)和n(n<=1000)的范围:");//定义主族函数中表示范围的量m,n
scanf("%d %d",&m,&n);
printf("m与n之间的绝对素数有:
");
for(k=m;k<=n;k++)
{
//prime(k); // <--这里改成判断返回值,是0就是素数,这是你代码定义的。是素数就相加.
if(0 == prime(k))tol += k;
}
printf("
它们的和是:%d
", tol); // <---加个打印输出吧
}
全部回答
- 1楼网友:北方的南先生
- 2021-11-28 05:48
#include
#includeint isPrime(int n)
{
int i;
for(i = 2; i <= sqrt(n); ++i)
{
if(n % i == 0) return 0;
}
return 1;
}void main()
{
int i, j;
for(i = 10; i < 100; ++i)
{
if(isPrime(i) == 1)
{
j = i / 10 + i % 10 * 10;
if(isPrime(j) == 1)
{
printf("%d(%d)是绝对素数\n", i, j);
}
}
}
}
请采纳答案,支持我一下。
#include
{
int i;
for(i = 2; i <= sqrt(n); ++i)
{
if(n % i == 0) return 0;
}
return 1;
}void main()
{
int i, j;
for(i = 10; i < 100; ++i)
{
if(isPrime(i) == 1)
{
j = i / 10 + i % 10 * 10;
if(isPrime(j) == 1)
{
printf("%d(%d)是绝对素数\n", i, j);
}
}
}
}
请采纳答案,支持我一下。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯