vc输出1-100内质数
#include<stdio.h>
int main()
{
int a,n,i,x,sum,t;
for(i=1,t=i;i<=100;i++)
{
for(a=i,sum=0;t>=1;t--)
{
n=a%t;
if(n==0)
sum=sum+1;
}
if(sum<=2)
printf("%d ",i);
}
printf(" ");
return 0;
}
结果不对 输出的是1-100所有数,调试发现t一直等于0,为什么?急 在线等 可追加
你程序的关键错是因为你的
for(i=1,t=i;i<=100;i++)
t不能在这里赋值的*在这里赋的话,t永远是1
你要将它赋在循环里面(你程序的风格也不好,尽量不要在for的初始值里写多条语句)
另外,质数要从2开始的(1既能被1除,也能被自己除的)
将你的循环改为
for(i=2; i<=100; i++)
{
t=i;
for(a=i,sum=0; t>=1; t--)
就可以了
#include<iostream>
using namespace std;
int main()
{
int i, j;
for(i=1;i<=100;i++) {
for(j=2;j<i;j++)
if(i!=j&&i%j==0)
break;
if(i == j) cout<<i<<endl;
}
system("pause");
}
事实上不建议这样写for(j=2;j<i;j++) ==>sqrt(i) 这样的算法更有效
热门标签: