#include<iostream>
int main()
{
int n;
std::cin>>n;
std::vector<int>num;
numpush_back(2);
for(int i = 3; i < n; i++)
{
int flag = 1;
for(int j = 0; j < numsize(); j++)
{
if(i%num[j] == 0)
{
flag = 0;
break;
}
}
if(flag)
numpush_back(n);
}
std::cout<<numsize();
return 0;
}筛选法求最大公约数:
求48和60的最大公因数:
1、先写出较大数的因数,60的因数有1,2, 3,5,6,10,12,15,20,30从大到小找60的因数中谁是48的因数就是它们的最大公因数,12是48的因数。所以,48和60的最大公因数是12。
同理可得24和36的最大公因数也是12。我看出两处逻辑不当的地方
第一个输出部分,这个简单,n没有改变,为什么n==10的时候要输出换行呢?
该为
void shuchu(void) //这里void不能丢
{
for(i=2,n=0;i<=100;i++), //你明知道从2开始,为什么要多一次循环
{
if(a[i]!=0)
{
printf("%5d",a[i]);
n++;
}
if(n%10==0)
printf("\n");
}
printf("\n");
}
判断筛选的过程,i从2~7就够了,也就是判断2 3 5 7这几个数
void shaixuan(void)
{
for(i=2;i<=7;++i)
{
if(a[i]==0) //如果a[i]=0了直接continue
contunue;
for(j=i+1;j<=100;j++) //这个j从i+1开始就好了
{
if(a[j]==0)
continue;
if(a[j]%a[i]==0)
a[j]=0;
}
}
}#include <stdioh>
main()
{
int n,i,t,m;
do{
printf("请输入一个大于2的正整数");
scanf("%d",&n);
}while(n<2);
for (i=2; i<=n; i++){
m=0;
for(t=2; t<i; t++)
if(i%t==0)//若不能被任一数整除则为素~
m++;
if (m==0)
printf("%d为素数\n",i);
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)