
我就站在你的角度写个程序吧
#include <stdioh>
#include <mathh>
int main()
{
int i,j,m;
for(i=1;i<=1000;i++)
{ m=0; /标记是否为素数 0代表为素数 1代表为非素数/
for(j=2;j<=sqrt(i);j++)
if(i%j==0) m=1; /符和条件 就m=1 /
if(m==1) /判断m=1 来决定是否输出结果/
printf("%d ",i);
}
}
不懂的可以用百度HI问 我目前在线
程序代码如下,仅供参考:
#include "stdioh"main()
{ int a,i;
for(a=1;a<=1000;a++)
{
for(i=2;i<=a;i++)
{
if(a%i!=0)
continue;
else if(a==i) printf("%d is a prime\n ",a);
else printf("%d is not a prime\n ",a);
break;
}
}
}
void fun(int m,int k,int xx[])
{
int i,j,n=0;
for(i=4;i<m;i++)
{
for(j=2;j<i;j++) if(i%j==0) break;
if(j==i) xx[n++]=i;
}
}
所谓素数就是不能被不是1和它本身的任何数整除。
这个函数的作用是找出从4到m的所有素数,并添加到数组xx中
第一个外循环是确定一个需要判断的书,比如——6
第二个内循环是从2到5(j<i,i是6)。分别于6取余数,如果有一个余数为0的话,就是能被整除(6除以2,得3余0),不符合素数。就执行break,跳出内循环,继续外循环的下一个数——7
如果内循环从2到6,没有一个可以整除7的,然后把7赋给xx数组,然后n++指向数组的下一位。
注意:你这个函数似乎有点问题呢。怎么没人看得出来?
if(j<i) xx[n++]=i;
这里因改成if(j==i) xx[n++]=i;
因为当j等于i的时候说明j已经从2到i-1都尝试了一遍,而且没有跳出循环,也就是没有整除的,所以是素数。在给数组。
如果是if(j<i) 的话,当i为6,j为2的时候,跳出内循环——for(j=2;j<i;j++) if(i%j==)break;后,仍然会执行 if(j<i) xx[n++]=i;。这时j是2小于i——6因此判断成立,6给数组。但6不是素数。
#include <stdioh>
int main()
{
int n,i=2;
scanf("%d",&n);
while(1)
{
if(n%i==0)
{
printf("%d",i);
n/=i;
if(n == 1) break;
printf("");
}
else
i++;
}
return 0;
}
判断一个整数m是否是素数,只需把m被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。思路1)的代码:
#include <stdioh>
int main(){
int a=0; // 素数的个数
int num=0; // 输入的整数
printf("输入一个整数:");
scanf("%d",&num);
for(int i=2;i<num;i++){if(num%i==0){a++; // 素数个数加1}}
if(a==0){printf("%d是素数。\n", num);}else{printf("%d不是素数。\n", num);}return 0;}
判断方法还可以简化。m不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ 之间的每一个整数去除就可以了。如果m不能被 2 ~ 间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。思路2)的代码:
#include <stdioh>
#include <mathh>
void main(){int m; // 输入的整数
int i; // 循环次数
int k; // 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是素数。\n",m);
else
printf("%d不是素数。\n",m);
return 0;}
判断一个数是否是素数
#include "mathh"
int su(long x)
{
int i;
if(x%2==0) return 0;
else
for(i=3;i<sqrt(x);i+=2)
if(x%i==0) return 0;
return 1;
}
判断素数,若是就返回1,否则就返回0,先看能不能被2整出,若整除肯定不是素数,如不整除就看它能不能被3,5,7,9。。。一直到sprt(x),整除。若整除就不是素数
# include <stdioh>
int isPrime(int l)
{
int i;
for(i=2;ii<=l;i++)
{
if(l%i==0)
{
return 0; //is not a prime
}
}
return 1; // is a prime
}
void main()
{
int count=0;
int i;
int sum=0;
for(i=2;i<=100;i++)
{
if(!isPrime(i))
{
printf("%d ",i);
count++;
sum+=i;
}
}
printf("\n");
printf("count is %d\n",count);
printf("sum is %d\n",sum);
}
包含求和以及不时素数的总个数
以上就是关于c语言,输出1到1000的非素数全部的内容,包括:c语言,输出1到1000的非素数、求个c语言程序求出1~1000之间的所有非素数、、求解关于C语言求非素数问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)