① c语言素数环问题的思路
http://www.java3z.com/cwbwebhome/article/article5/5817.html?id=1470
② C语言求素数和
main()
{
int i,m,j; //增加一个变量,见后面说明
for(i=2;i<=100;i++)
{m=sqrt(i);
//for(i=2;i<=m;i++) 这里i值被重新赋值,你原来的i值找不到了!如果是素数,怎么输出呢?
for(j=2;j<=m;j++) //换一个变量,不要影响要检查的数据i
if(j%m!=0) //改成j
; //这样写,会让你更清楚,这句如果j不能整除m,就啥也不干,象你所说回到下一个循环检查。
else
break; //加上这两句,如果能整除则说明:i不是素数!!就不要再去检查了。
if ( j > m ) //加上这句,如果检查所有的j全部不能整除m,循环结束后,j一定大于m,这时的i才是素数
printf("%d",i);
}
getch();
}
③ c语言素数并求和
#include <stdio.h>
int isPrime(int n)
{
int i;
for(i = 2; i * i <= n; i = (i + 1) | 1)
if(n % i == 0)
return 0;
return n > 1;
}
int main(void)
{
int sum = 0, i = 0;
for( ; i <= 500; i++)
if(isPrime(i))
{
sum += i;
printf("%d\t", i);
}
printf("\nsum = %d\n", sum);
return 0;
}
④ (c语言)求素数和
你s=s+x;
放的位置不对,应该这样放:
#include
void
main()
{
int
x,n=10,i,s=0;
for(x=3;x<=n;x++)
{
for(i=2;i
=x)
{
printf("%d+",x);
s=s+x;
}
}
printf("\b=%d\n",s);
}
补充:
在用外层的for计算下一个的时候,要把内层for判断出来的素数累加起来啊
否则,计算到下一个的时候,前一个就丢了啊
所以,累加的那句代码,应该在外层for循环的里面,内存for循环的外面(后面)啊
⑤ c语言使用函数求素数和
您好,很高兴回答您的问题。
对于您的这个问题,有两个方面的知识点需要掌握,一是素数的判断标准,我们知道只能被1和数本身整除的数叫素数,具体实践时就要用到循环结构;而是函数的调用,要清楚调用函数的结构和使用方法,才能用好调用。
以上两个问题解决了,那么这个程序就可以实现功能了。还有关键的一点就是您没有给出具体的范围,也就是求哪个范围内的素数之和呢,没有这个范围,也就没有办法求出和了。
⑥ C语言素数环
#include"stdio.h"
int shu(int n)
{
int i;
for(i=2;i<=n/2;i++)
if(n%i==0) return 0;
return 1;
}
main()
{
int a,b,c,d,e,f;
for(a=1;a<=9&&a!=5;a+=2)
for(b=1;b<=9&&b!=5;b+=2)
for(c=1;c<=9&&c!=5;c+=2)
for(d=1;d<=9&&d!=5;d+=2)
for(e=1;e<=9&&e!=5;e+=2)
for(f=1;f<=9&&f!=5;f+=2)
{
if((shu(100000*a+10000*b+1000*c+100*d+10*e+f)==1)&&
(shu(100000*b+10000*c+1000*d+100*e+10*f+a)==1)&&
(shu(100000*c+10000*d+1000*e+100*f+10*a+b)==1)&&
(shu(100000*d+10000*e+1000*f+100*a+10*b+c)==1)&&
(shu(100000*e+10000*f+1000*a+100*b+10*c+d)==1)&&
(shu(100000*f+10000*a+1000*b+100*c+10*d+e)==1))
printf(" 最小的素数环为:%d", 100000*a+10000*b+1000*c+100*d+10*e+f);
goto loop;
}
loop:getchar();
}
⑦ c语言素数环问题求改错,不要其他代码就帮我改一下
不清楚你是要求1-20所有长度的素数环还是要求长度为20的所有素数环
按照后者给你改了一版程序出来
需要注意的有两点
一个是由于要递归尝试下一个数值,所以用来存结果的数组必须要作为参数传进去
另一个 必须有一个数组作为标志 表示哪些数用过 因为1-20是不能重复使用的
最后说明一下 在你这个基础上改出来的是求长度为20的所有素数环 这是一个相当大的数量
截止回答时 我的机器还在继续往出打印
如果想只求出一组就退出运行 可以把search中n==20判断里面的return 改成exit(0) (注意要添加stdlib头文件)
代码如下
#include<stdio.h>
intsushu(inti);
voidsearch(inta[],intb[],intn);
//目测程序功能为求长度为20的素数环
inta[21];
intb[21];//用来标记某个数是否被用过
voidmain()
{inti;
//for(i=1;i<21;i++)//如果只是寻找固定的20个数,那么没必要循环
a[0]=b[0]=1;
search(a,b,1);//由于需要递归所以要把数组做为参数
// printf("result: ");//结果在search中输出
}
voidsearch(inta[],intb[],intn)
{intj,k,t;
if(n==20)
{
if(sushu(19))
{
for(j=0;j<20;j++)
printf("%d",a[j]);
printf(" ");
}
return;//只打印一组的话这里改成exit(0);
}
for(k=1;k<21;k++)
{
if(b[k]==1)continue;//数字k+1已用
a[n]=k+1;
b[k]=1;
if(sushu(n-1))
search(a,b,n+1);
b[k]=0;
}
}
intsushu(inti)
{
intj,b;
if(i==19)
a[20]=a[0];
for(j=2;j<a[i]+a[i+1];j++)
{b=(a[i]+a[i+1])%j;
if(b==0)
return0;}
if(a[i]+a[i+1]==j)
return1;
}
⑧ 菜鸡求教C语言素数环有关问题
#include<math.h>
intmain(){
intm;//输入的整数
inti;//循环次数
intk;//m的平方根
printf("输入一个整数:");
scanf("%d",&m);
//求平方根,注意sqrt()的参数为double类型,这里要强制转换m的类型
k=(int)sqrt((double)m);
for(i=2;i<=k;i++)
if(m%i==0)
break;
//如果完成所有循环,那么m为素数
//注意最后一次循环,会执行i++,此时i=k+1,所以有i>k
if(i>k)
printf("%d是素数。 ",m);
else
printf("%d不是素数。 ",m);
return0;
}
⑨ C语言素数环优化
是不是等待输入也计算时间了,那超时就很不好说了。。。。。。。如果真那样,就不让输入,使用默认的数
~
~
~